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.
