Creative solution, using an intermediate account. I wonder if just an importer that requires both the credit card account and the Amazon orders file in order to produce output isn't simpler. It's just a join between these two datasets, and and CC importer could just fail when the other file's not given to it.
Now of course, beangulp is designed with the idea that imports come from a single file... you probably want to just write a Python script with custom code. Just an idea, (the Amazon thing's been nagging me too, I do it manually and I'm annoyed each time), On Tue, Oct 4, 2022 at 4:37 PM Red S <[email protected]> wrote: > Now written up as an article here > <https://reds-rants.netlify.app/personal-finance/booking-amazon-purchases/> > . > > On Tuesday, October 4, 2022 at 1:19:04 PM UTC-7 Red S wrote: > >> I'm trying to wrap my mind around the different parts of beancount in >>> order to automate the import of my Amazon purchases. Using their Chase card >>> allows me to have a mapping from a credit card transaction to Amazon order >>> id. From Amazon, I can download a csv file with all items with their order >>> ids. >>> >> >> Here is a slightly different approach that has dependably worked for me >> for years to import Amazon purchases, and addresses all the issues you >> brought up (of matching during import): >> >> *Solution* >> 1. Credit card transactions are booked to a Zero sum account. Smart >> importer does this automatically: >> 2022-09-02 * "AMZN Mktp US*1FASU238B" >> Liabilities:Credit-Cards:MyCard -18.92 USD >> Assets:Zero-Sum-Accounts:Amazon-Purchases >> >> 2. Amazon purchases are booked from the Zero sum account to the expense >> account. smart_importer will book repeating transactions correctly. Others >> need to be booked manually: >> 2022-09-03 * "Cool Stealth Canoe, Black" >> card: "Gift Certificate/Card and Visa - 1234" >> Assets:Zero-Sum-Accounts:Amazon-Purchases -18.92 USD >> Expenses:Outdoor-Activities:Equipment >> >> 3. In most cases, the transactions in the Zero sum account will sum to >> zero, and you are all done! Optionally, if you use the zero sum plugin >> <https://github.com/redstreet/beancount_reds_plugins/blob/main/beancount_reds_plugins/zerosum/README.md>, >> it will match transactions above in memory, that can help in case you have >> unmatched, left over transactions. >> >> *Pros and Cons* >> >> - With this approach, there is no dependency on the credit card used >> to include metadata that maps to the Amazon order id. I could even pay >> with >> an Amazon gift card (even partially), and everything works out of the box. >> - The approach decouples the payment with the classification of >> transactions. This way, you are not forced to import and classify >> purchases >> each time you download your credit card transactions (which is fully >> automated for me, and takes like 5 seconds, which means I tend to do it >> frequently). Your pending amazon purchase details are neatly booked into >> the Assets account as a negative balance, and thus also reflect your state >> correctly. >> - Of course, the decoupling means you can't see the expense account >> on the payment transaction directly. I find that this doesn't matter to me >> at all. If you find that it does (I'd be curious as to why), it's pretty >> simple to solve by adding a trivial beancount-link feature to the zerosum >> plugin to link the two transactions. Fava will then display a link. >> >> >> *Implementation* >> I use Beancount's built in csv importer, which suffices, along with >> smart_importer, both seen in the config below: >> >> CONFIG = [ >> # GDPR Download >> # limitations: doesn't include coupons and discounts >> apply_hooks(csv.Importer({Col.DATE: 'Order Date', >> Col.NARRATION1: 'Product Name', >> Col.AMOUNT: 'Total Owed', >> Col.LAST4: 'Payment Instrument Type', >> }, >> 'Assets:Zero-Sum-Accounts:Amazon-Purchases', >> 'USD', >> >> ("Website", "Order ID", "Order Date", "Purchase Order >> Number", "Currency", "Unit Price", "Unit Price Tax", >> "Shipping Charge", "Total Discounts", "Total Owed", >> "Shipment Item Subtotal", "Shipment Item Subtotal Tax", >> "ASIN", "Product Condition", "Quantity", "Payment >> Instrument Type", "Order Status", "Shipment Status", >> "Ship Date", "Shipping Option", "Shipping Address", >> "Billing Address", "Carrier Name & Tracking Number", >> "Product Name", "Gift Message", "Gift Sender Name", >> "Gift Recipient Contact Details"), >> >> encoding='utf-8-sig', >> institution='Amazon', >> invert_sign=True), >> [PredictPostings()]), >> ] >> >> Amazon used to provide a "Category" column (eg: Kitchen, Sporting, etc.) >> that worked together with smart_importer to book almost any, never-seen >> transaction correctly. They don't any more. >> >> *Extensions* >> I screenscrape (copy-paste) my Amazon gift card transactions from the >> webpage as a tab-separated file, and import this as a payment method. At >> the end of this, I have a gift card balance that usually agrees with what >> my Amazon account shows. I'll share this importer later. >> >> All the above takes perhaps 3-4 minutes + the time taken to book the >> purchases. I personally do it only once in several months. >> > -- > You received this message because you are subscribed to the Google Groups > "Beancount" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/beancount/200ab89c-92ad-435e-a5e8-8c5827f72801n%40googlegroups.com > <https://groups.google.com/d/msgid/beancount/200ab89c-92ad-435e-a5e8-8c5827f72801n%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Beancount" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/CAK21%2BhPLzP725USTai-2EnfN6M0TRbMUjDUH-Uzg2uOcOajtrA%40mail.gmail.com.
