🎉 Amex Bonus Tracker - 追踪Amex开卡奖励所需消费!【支持油猴】

之前一直使用MaxReward去统计开卡奖励,但是那个现在好像没有Amex开卡奖励的tracker了。顺手写了个script,专门用来追踪在开卡奖励所需的消费。

这个脚本会自动帮你计算符合开卡奖励要求的总消费金额,确保你能轻松达成目标拿到奖励!

:bulb: 脚本功能一览:

  1. 精确追踪开卡奖励消费:自动计算你的Amex信用卡的符合条件的总消费金额。
  2. 排除不计入的交易
  • 年费:自动排除,不用担心年费混进统计。
    • MEMBERSHIP FEE
  • 正常的还款:还款也不会算计入。
    • PAYPAL ACCT PAYMENT RECEIVED - THANK YOU
    • AUTOPAY PAYMENT - THANK YOU
    • ONLINE PAYMENT - THANK YOU
    • MOBILE PAYMENT - THANK YOU
  • 负余额转移: 和还款一样
    * CR ADJ FOR BALANCE TRA
  • Credit:以下Credit会被排除
    • AMEX AIRLINE FEE REIMBURSEMENT
    • SHOP SAKS WITH PLATINUM CREDIT
    • DELL CREDIT
    • AMEX DINING CREDIT
    • HILTON RESORT CREDIT
    • AMEX FLIGHT CREDIT
    • HILTON STATEMENT CREDIT
  1. 目前没有办法track的Credit有(需要更多dp去验证)
    • CLEAR: The statement is shown as CLEAR NEW YORK.
    • EQUINOX: The statement is shown as EQUINOX #133 NEW YORK
    • Amex Offers: Random merchant name
  2. 无法排除Cash Advance:需要statement的描述

:bar_chart: 怎么用 (JS):

  1. 访问交易记录页面: 打开你的Amex账户,访问这个链接(可以替换日期):
    https://global.americanexpress.com/activity/range?from=2024-01-01&to=2024-12-31
  2. 选择查看交易的卡片: 在页面上选择你想查看的卡片,确保所有交易记录都显示出来。
  3. 运行脚本:
  • 打开浏览器控制台(按下F12或右键点击页面选择“检查”,然后切换到Console标签)。
  • 把下面这段代码粘贴进去,按回车运行:
const excludedDescriptions = [
  'MEMBERSHIP FEE',
  'PAYPAL ACCT PAYMENT RECEIVED - THANK YOU',
  'AUTOPAY PAYMENT - THANK YOU',
  'CR ADJ FOR BALANCE TRA',
  'ONLINE PAYMENT - THANK YOU',
  'MOBILE PAYMENT - THANK YOU',
  'AMEX AIRLINE FEE REIMBURSEMENT',
  'SHOP SAKS WITH PLATINUM CREDIT',
  'DELL CREDIT',
  'AMEX DINING CREDIT',
  'HILTON RESORT CREDIT',
  'AMEX FLIGHT CREDIT',
  'HILTON STATEMENT CREDIT',
];

let parentElement = document.querySelector('[data-module-name="axp-activity-feed-transactions-table-transactions"]');
let childElements = parentElement.querySelectorAll('.position-relative');
let totalEligibleAmount = 0;
let totalAmount = 0;
let includedCount = 0;
let excludedCount = 0;

// Object to store the amount for each kind of excluded transaction
let excludedAmounts = {};
excludedDescriptions.forEach(desc => {
  excludedAmounts[desc] = 0;
});


console.log(`Transaction`);


childElements.forEach((childElement) => {
  let descriptionElement = childElement.querySelector('.description');
  let priceElement = childElement.querySelector('.hidden-md-up.col-sm-4.col-sm-4.pad-responsive-r');
  
  if (descriptionElement && priceElement) {
    let description = descriptionElement.innerText;
    let price = parseFloat(priceElement.innerText.replace('$', '').replace(',', ''));
    totalAmount += price;
    
    if (!excludedDescriptions.includes(description)) {
      console.log(`🟢 ${description.padEnd(50)} ${price >= 0 ? '$' : '-$'}${Math.abs(price).toFixed(2)}`);
      includedCount++;
      totalEligibleAmount += price;
    } else {
      console.log(`🔴 ${description.padEnd(50)} ${price >= 0 ? '$' : '-$'}${Math.abs(price).toFixed(2)}`);
      excludedCount++;
      // Increment the amount for this excluded description
      excludedAmounts[description] += price;
    }
  }
});

console.log('\n');
console.log(`Summary`);

console.log(`🟢 ${`Total Eligible Spending:`.padEnd(50)} ${totalEligibleAmount >= 0 ? '$' : '-$'}${Math.abs(totalEligibleAmount).toFixed(2)}`);
console.log(`🟡 ${`Total Amount:`.padEnd(50)} ${totalAmount >= 0 ? '$' : '-$'}${Math.abs(totalAmount).toFixed(2)}`);
console.log(`🟡 ${`Included Transactions:`.padEnd(50)} ${includedCount}`);
console.log(`🟡 ${`Excluded Transactions:`.padEnd(50)} ${excludedCount}`);

console.log('\n');
// Display non-zero amounts for each kind of excluded transaction
console.log('Amount for each kind of excluded transaction:');
for (let desc in excludedAmounts) {
  if (excludedAmounts[desc] !== 0) {
    console.log(`🔴 ${desc.padEnd(50)} ${excludedAmounts[desc] >= 0 ? '$' : '-$'}${Math.abs(excludedAmounts[desc]).toFixed(2)}`);
  }
}

:bar_chart: 怎么用 (油猴):

  1. 安装Tampermonkey扩展:如果你还没有安装Tampermonkey扩展,请前往Chrome Web Store(Chrome用户)或Firefox Add-ons(Firefox用户)进行安装。
  2. 安装脚本:点击此链接进入Greasy Fork页面,然后点击“Install this script”按钮安装脚本。
  3. 访问Amex交易记录页面:登录你的Amex账户,并访问交易记录页面。你可以在URL中自定义开始和结束日期:Amex交易记录页面
  4. 查看结果:脚本会自动运行并显示在页面上方。你可以在页面上方找到一个按钮,点击它即可查看符合开卡奖励条件的总消费金额和相关统计信息。
  • Show Amex Spending Tracker

  • After clicking the button

:link: 下载链接

Amex Bonus Tracker


Update logs:

  • V1.0.5: Exclude ‘MOBILE PAYMENT - THANK YOU’, @cat1
  • V1.0.4: 修复了大部分UI issues!
  • V1.0.0: Integrate with Tampermonkey. Have fun!
  • Exclude ‘ONLINE PAYMENT - THANK YOU’. @olddonkey
  • 排除更多的credit statement,并且列出exclusion明细。

Todo List:

  • Integrate the script with Tampermonkey
  • Support the conservative eligible spending amount
143 个赞

感谢分享

顶着锅盖说一句 这一串 description !== 貌似不是很scalable 很难cover所有case

3 个赞

感谢楼主的热情分享!:yaoming:我选择邮件大法,但想必楼主的大法对于没收到邮件的各位大有裨益。

(有没有懂哥能把邮件里的信息魔改出来呢

14 个赞

这 hardcode 的。。感觉不太够吧

比如退款呢?

5 个赞

哈哈哈,直接用chatgpt写了!有空写个油猴,整理下代码,直接render到amex网页上。

火钳刘明

2 个赞

退款是统计到total amount里的。如果是Amex offer导致的credit,理论上也应该exclude,但是不太好从前端区分,就也一起统计了:joy:

:troll:

image

如果我没搞错的话,payment 没算对,因为你 hardcode 的办法没有把最常见的 online payment 给排除掉

4 个赞

amex之神!


其实也可以直接问 :yaoming:

4 个赞

谢谢DP,我把它加上,哈哈哈!!

最暴力改法就是把类别里 credit 的部分全部去掉,再加上一些特殊的关键词过滤。当然,可能还是有 case 不能覆盖的

2 个赞

退款好像也是算credit,这个是难点

暂时能想到的还有 FHR,gold 和 brilliant 的 dinning credit,不同的 amex 卡 coupon 也不一样

我是不太会去依赖这样的脚本,感觉很容易漏掉一些 case,自己算算得了:joy:

1 个赞

客服看到的是有延迟的 而且很多时候不准 我记得他们也是手动算的。 你问3个客服 大概率会有3个不同数字

如果有100+的transaction去做organic的消费的话,自己算还是很痛苦的。LOL

1 个赞

很多报销项都没有啊,lz就用chatgpt写了个草稿发帖了?

3 个赞

泥潭人才好多啊

我好像没收到过 :dotted_line_face:

如果真的是这样,那我想说,应该开发一些机制来制止这种为了冲泥潭会员等级而不顾一切的行为了