earnrate 0.2.8 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +31 -5
  2. package/data/CHANGELOG.md +133 -0
  3. package/data/VERSION +1 -1
  4. package/data/cards/amex-blue-business-plus.yaml +4 -0
  5. package/data/cards/amex-blue-cash-everyday.yaml +4 -0
  6. package/data/cards/amex-blue-cash-preferred.yaml +36 -3
  7. package/data/cards/amex-gold.yaml +4 -0
  8. package/data/cards/amex-platinum.yaml +4 -0
  9. package/data/cards/bank-of-america-atmos-rewards-ascent.yaml +4 -0
  10. package/data/cards/bank-of-america-atmos-rewards-business.yaml +4 -0
  11. package/data/cards/bank-of-america-atmos-rewards-summit.yaml +24 -1
  12. package/data/cards/bank-of-america-customized-cash-rewards.yaml +4 -0
  13. package/data/cards/bilt-obsidian.yaml +4 -0
  14. package/data/cards/capital-one-kohls-card.yaml +2 -0
  15. package/data/cards/capital-one-kohls-rewards-visa.yaml +2 -0
  16. package/data/cards/capital-one-savor.yaml +4 -0
  17. package/data/cards/capital-one-venture-x.yaml +4 -0
  18. package/data/cards/capital-one-venture.yaml +4 -0
  19. package/data/cards/chase-aeroplan.yaml +5 -0
  20. package/data/cards/chase-freedom-flex.yaml +4 -0
  21. package/data/cards/chase-freedom-unlimited.yaml +4 -0
  22. package/data/cards/chase-ihg-one-rewards-business.yaml +29 -1
  23. package/data/cards/chase-ihg-one-rewards-premier-select.yaml +37 -2
  24. package/data/cards/chase-ihg-one-rewards-premier.yaml +29 -1
  25. package/data/cards/chase-ihg-one-rewards.yaml +57 -7
  26. package/data/cards/chase-ink-business-cash.yaml +4 -0
  27. package/data/cards/chase-ink-business-preferred.yaml +4 -0
  28. package/data/cards/chase-prime-visa.yaml +4 -0
  29. package/data/cards/chase-sapphire-preferred.yaml +4 -0
  30. package/data/cards/chase-sapphire-reserve.yaml +4 -0
  31. package/data/cards/chase-southwest-performance-business.yaml +4 -0
  32. package/data/cards/chase-southwest-plus.yaml +4 -0
  33. package/data/cards/chase-southwest-premier-business.yaml +4 -0
  34. package/data/cards/chase-southwest-premier.yaml +4 -0
  35. package/data/cards/chase-southwest-priority.yaml +4 -0
  36. package/data/cards/chase-united-business.yaml +5 -0
  37. package/data/cards/chase-united-club-business.yaml +5 -0
  38. package/data/cards/chase-united-club.yaml +5 -0
  39. package/data/cards/chase-united-explorer.yaml +5 -0
  40. package/data/cards/chase-united-gateway.yaml +5 -0
  41. package/data/cards/chase-united-quest.yaml +29 -1
  42. package/data/cards/citi-aadvantage-business.yaml +4 -0
  43. package/data/cards/citi-aadvantage-executive.yaml +4 -0
  44. package/data/cards/citi-aadvantage-globe.yaml +4 -0
  45. package/data/cards/citi-aadvantage-mileup.yaml +4 -0
  46. package/data/cards/citi-aadvantage-platinum-select.yaml +4 -0
  47. package/data/cards/citi-costco-anywhere-visa-business.yaml +4 -0
  48. package/data/cards/citi-costco-anywhere-visa.yaml +4 -0
  49. package/data/cards/citi-custom-cash.yaml +2 -0
  50. package/data/cards/citi-double-cash.yaml +4 -0
  51. package/data/cards/citi-my-best-buy-visa.yaml +4 -0
  52. package/data/cards/citi-strata-elite.yaml +4 -0
  53. package/data/cards/citi-strata-premier.yaml +4 -0
  54. package/data/cards/sofi-unlimited-2.yaml +4 -0
  55. package/data/cards/td-bank-nordstrom-credit-card.yaml +2 -0
  56. package/data/cards/td-bank-nordstrom-visa.yaml +2 -0
  57. package/data/cards/td-bank-target-circle-card.yaml +2 -0
  58. package/data/cards/usbank-cash-plus.yaml +5 -0
  59. package/data/cards/wells-fargo-active-cash.yaml +4 -0
  60. package/data/cards/wells-fargo-autograph.yaml +4 -0
  61. package/data/merchants/overrides.yaml +284 -0
  62. package/data/merchants/seed.yaml +1055 -2
  63. package/dist/cli/args.js +3 -6
  64. package/dist/cli/explore.js +10 -0
  65. package/dist/cli/import.js +18 -4
  66. package/dist/cli/run.js +3 -1
  67. package/dist/cli/wallet.js +5 -1
  68. package/dist/data/file-store.js +2 -2
  69. package/dist/data/integrity.js +17 -0
  70. package/dist/data/store.js +1 -1
  71. package/dist/data/wallet-edit.js +32 -18
  72. package/dist/engine/cheat-sheet.js +46 -2
  73. package/dist/engine/checklist.js +19 -8
  74. package/dist/engine/evaluate.js +2 -0
  75. package/dist/engine/explore.js +1 -1
  76. package/dist/engine/milestones.js +83 -0
  77. package/dist/engine/periods.js +29 -12
  78. package/dist/engine/recommend.js +39 -9
  79. package/dist/engine/record.js +39 -1
  80. package/dist/engine/rule-text.js +5 -1
  81. package/dist/engine/setup.js +13 -2
  82. package/dist/engine/simulate.js +25 -3
  83. package/dist/engine/text.js +11 -0
  84. package/dist/engine/wallet-change.js +67 -0
  85. package/dist/engine/wallet-summary.js +17 -5
  86. package/dist/format/cards.js +3 -1
  87. package/dist/format/wallet.js +18 -4
  88. package/dist/import/analyze.js +42 -2
  89. package/dist/mcp/inputs.js +10 -0
  90. package/dist/mcp/schemas.js +47 -2
  91. package/dist/mcp/tools/account.js +1 -1
  92. package/dist/mcp/tools/answers.js +8 -4
  93. package/dist/mcp/tools/wallet.js +18 -10
  94. package/dist/schema/card.js +22 -1
  95. package/dist/schema/common.js +4 -0
  96. package/dist/schema/wallet.js +2 -0
  97. package/package.json +5 -3
package/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  I wanted a ghost card: one card that always charges the best of my cards. The card networks won't allow one, so I built the next best thing.
9
9
 
10
- **earnrate is the best-card decision layer for people and AI agents.** Give it a merchant, and it tells you which card earns the most there, from your own cards or from every card it knows, and why. Save your cards and it tracks your caps and chosen categories. It's valuation-aware and transparent about its assumptions. It never sees a card number.
10
+ **earnrate is the best-card decision layer for people and AI agents.** Give it a merchant, and it tells you which credit card earns the most there, from your own cards or from every card it knows, and why. Save your cards and it tracks your caps and chosen categories. It's valuation-aware and transparent about its assumptions. It never sees a card number.
11
11
 
12
12
  - Runs on your machine, in your browser at [earnrate.dev](https://earnrate.dev) (which you can add to your phone's Home Screen and use offline), or in Claude as a connector at `https://mcp.earnrate.dev`, with nothing to install. No account and no affiliate links; the hosted server counts requests by tool name, nothing about what you ask. See the [privacy page](https://earnrate.dev/privacy).
13
13
  - U.S. cards and U.S. merchants, for now.
@@ -21,7 +21,8 @@ Needs Node 22 or later.
21
21
  ```sh
22
22
  npm install -g earnrate
23
23
  earnrate restaurants # the best cards earnrate knows, no setup
24
- earnrate whole foods 80 --cards amex-gold,chase-prime-visa # just these cards
24
+ earnrate trader joes --cards amex-gold,chase-prime-visa # just these cards
25
+ earnrate whole foods 80 # add an amount to see the dollars back
25
26
  ```
26
27
 
27
28
  You never have to enter your cards: with none, every answer covers every card earnrate knows. To have earnrate remember yours, track caps and welcome bonuses, and give a cheat sheet for your own wallet, save them:
@@ -117,6 +118,31 @@ While the bonus is open and you're behind an even pace to the deadline, that car
117
118
 
118
119
  `spend`, `by` and the reward (`points`, or `dollars` for cash back) default to the card's published offer once earnrate has one; set them when your offer was different.
119
120
 
121
+ ### Paying abroad
122
+
123
+ Many cards charge a foreign transaction fee, often 3%, on every purchase outside the U.S., which can wipe out what they earn. Give the country with `--country` (two letters, like `FR`) and earnrate ranks each card after its fee, says what a card with a fee nets, and points out cards that earn extra abroad:
124
+
125
+ ```sh
126
+ earnrate restaurants --country GB
127
+ earnrate best groceries --country JP # every card earnrate knows
128
+ ```
129
+
130
+ Each card's fee comes from its issuer's rates-and-fees table, and `earnrate cards` shows it. The cheat sheet has an "Abroad" line, on earnrate.dev a "Paying outside the U.S." box does the same, and in Claude, mention where you're paying.
131
+
132
+ ### Spend bonuses
133
+
134
+ Some cards pay a bonus once a year after you spend a set amount on them, like the IHG One Rewards cards' "10,000 bonus points after you spend $15,000 on purchases each calendar year". `earnrate cards ihg` lists each card's, with what it pays besides points (status, Elite Night Credits, free nights). Only the points are valued.
135
+
136
+ Every purchase on the card counts. Once earnrate knows how much you've spent on the card this year, an answer adds the bonus points to the purchase that reaches the total and says so, and `earnrate todo` lists a bonus once you're at least 75% of the way there. Without that tracking, a spend bonus never changes an answer: earnrate doesn't guess at spending it wasn't told about. Spending counts up as you record purchases from an AI assistant or import a statement with `--apply`. You can also set it in the card's settings on earnrate.dev, or in the wallet file:
137
+
138
+ ```yaml
139
+ - id: chase-ihg-one-rewards-premier
140
+ milestone_usage:
141
+ spend-15k: { period: '2026', spent: 11200 } # spend-40k counts the same purchases
142
+ ```
143
+
144
+ `earnrate simulate` adds a bonus's points to a card's yearly rewards when the year's spending on it reaches the total.
145
+
120
146
  ### Which new card?
121
147
 
122
148
  These compare every card earnrate knows that's open to new applicants:
@@ -147,7 +173,7 @@ earnrate import gold.csv:amex-gold sapphire.csv:chase-sapphire-preferred
147
173
  It totals what each card earned against the best card in your wallet for each purchase, lists the merchants where another card would have earned the most, and flags merchants your issuer codes differently than earnrate assumes. Name several statements, each with its card, to get one report across them. It reads Amex and Chase activity CSVs. Download the CSV rather than a PDF statement: Chase's PDFs print the full card number in the payment coupon, and earnrate never handles card numbers.
148
174
 
149
175
  - It's a dry run unless you pass `--apply`, which records cap usage for the current period and spending toward an open welcome bonus in your wallet. Refunds lower both.
150
- - Only the date, description, amount, category and (for Chase) transaction type columns are read. The statements themselves are never stored: `--apply` writes cap and bonus totals to your wallet, and a hash of each recorded purchase to `imported.json` beside it, so importing the same file twice never counts twice.
176
+ - Only the date, description, amount, category and (for Chase) transaction type columns are read. The statements themselves are never stored: `--apply` writes cap, welcome-bonus and spend-bonus totals to your wallet, and a hash of each recorded purchase to `imported.json` beside it, so importing the same file twice never counts twice.
151
177
  - For a merchant earnrate doesn't know, it uses the statement's category and marks the row, since another issuer may code it differently.
152
178
  - `--valuation points-heavy` values Amex and Chase points at transfer rates instead of your wallet's values, which can change which card wins.
153
179
 
@@ -188,10 +214,10 @@ Use the connector (or plugin) or the local extension, not both: each keeps its o
188
214
  - `best_card_for_purchase`: which card to use, with reasons
189
215
  - `best_cards_for` and `simulate_spending`: compare every card earnrate knows, for one purchase or a year of spending, with no wallet needed
190
216
  - `resolve_merchant`: how a merchant was identified
191
- - `list_wallet`: a to-do list for your cards right now, then your cards, caps left this period, chosen categories, welcome-bonus progress and the point values you've set
217
+ - `list_wallet`: a to-do list for your cards right now, then your cards, caps left this period, chosen categories, welcome-bonus and spend-bonus progress and the point values you've set
192
218
  - `cheat_sheet`: the card to use for each everyday kind of purchase this quarter
193
219
  - `compare_welcome_offers`: the best public sign-up offers on cards you don't have
194
- - `record_purchase`: books a purchase against its cap and any open welcome bonus in your wallet file, keeping your comments
220
+ - `record_purchase`: books a purchase against its cap, any open welcome bonus and the card's yearly spend bonuses in your wallet file, keeping your comments
195
221
  - `search_cards`, `add_card`, `update_card`, `remove_card`, `set_memberships` and `set_point_values`: set up the wallet in conversation, including what your points are worth (memberships and point values need no cards)
196
222
 
197
223
  Saving cards is optional: name them in the conversation for one answer, or ask the assistant to save them, and it finds them, adds them, and asks about anything a card needs, like this quarter's Cash+ picks.
package/data/CHANGELOG.md CHANGED
@@ -2,6 +2,139 @@
2
2
 
3
3
  Every change to card rules, merchants, categories or currencies under `data/`. Bump `data/VERSION` (`YYYY.MM.DD`, plus `.N` for a second release on the same day) and add a section here in the same commit. Each row cites the issuer page the new value came from.
4
4
 
5
+ ## 2026.11.03.3
6
+
7
+ Every card has a foreign transaction fee, from its issuer's rates-and-fees table where one is readable. Abroad, answers rank each card after its fee. Atmos Rewards Summit's 3x on foreign purchases is modeled with a new `foreign_only` geography. Six cards have no readable page stating the fee and are left as todos.
8
+
9
+ | Card | Field | Old → new | Source |
10
+ | --------------------------------------- | ----------------------- | ----------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
11
+ | amex-blue-business-plus | foreign_transaction_fee | new: 2.7% | [americanexpress.com pricing page](https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/bluebusinessplus-credit-card/45094-9-0) |
12
+ | amex-blue-cash-everyday | foreign_transaction_fee | new: 2.7% | [americanexpress.com pricing page](https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/blue-cash-everyday-credit-card/25330-10-0) |
13
+ | amex-blue-cash-preferred | foreign_transaction_fee | new: 2.7% | [americanexpress.com pricing page](https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/blue-cash-preferred-credit-card/25330-10-0#offer-terms) |
14
+ | amex-gold | foreign_transaction_fee | new: none | [americanexpress.com pricing page](https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/gold-card/25330-10-0#offer-terms) |
15
+ | amex-platinum | foreign_transaction_fee | new: none | [americanexpress.com pricing page](https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/platinum-card/25330-10-0#offer-terms) |
16
+ | bank-of-america-atmos-rewards-ascent | foreign_transaction_fee | new: none | [bankofamerica.com pricing page](https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081060&productoffercode=RS&locale=en_US) |
17
+ | bank-of-america-atmos-rewards-business | foreign_transaction_fee | new: none | [bankofamerica.com pricing page](https://www.bankofamerica.com/smallbusiness/credit-cards/terms-and-conditions/?campaignid=4080500&productoffercode=CX&locale=en_US) |
18
+ | bank-of-america-atmos-rewards-summit | foreign_transaction_fee | new: none | [bankofamerica.com pricing page](https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US) |
19
+ | bank-of-america-customized-cash-rewards | foreign_transaction_fee | new: 3% | [bankofamerica.com pricing page](https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4079537&productoffercode=8H&locale=en_US) |
20
+ | bilt-obsidian | foreign_transaction_fee | new: none | [bilt.com card page](https://www.bilt.com/card/obsidian) |
21
+ | capital-one-kohls-card | foreign_transaction_fee | new: not on file (todo) | no readable page states it |
22
+ | capital-one-kohls-rewards-visa | foreign_transaction_fee | new: not on file (todo) | no readable page states it |
23
+ | capital-one-savor | foreign_transaction_fee | new: none | [capitalone.com card page](https://www.capitalone.com/credit-cards/savor/) |
24
+ | capital-one-venture-x | foreign_transaction_fee | new: none | [capitalone.com card page](https://www.capitalone.com/credit-cards/venture-x/) |
25
+ | capital-one-venture | foreign_transaction_fee | new: none | [capitalone.com card page](https://www.capitalone.com/credit-cards/venture/) |
26
+ | chase-aeroplan | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65070.html) |
27
+ | chase-freedom-flex | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65280.html) |
28
+ | chase-freedom-unlimited | foreign_transaction_fee | new: 3% | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC61498.html) |
29
+ | chase-ihg-one-rewards-business | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65355.html) |
30
+ | chase-ihg-one-rewards-premier-select | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65336.html) |
31
+ | chase-ihg-one-rewards-premier | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65294.html) |
32
+ | chase-ihg-one-rewards | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65295.html) |
33
+ | chase-ink-business-cash | foreign_transaction_fee | new: 3% | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC63827.html) |
34
+ | chase-ink-business-preferred | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC63764.html) |
35
+ | chase-prime-visa | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC59329.html) |
36
+ | chase-sapphire-preferred | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65222.html) |
37
+ | chase-sapphire-reserve | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC64842.html) |
38
+ | chase-southwest-performance-business | foreign_transaction_fee | new: none | [creditcards.chase.com card page](https://creditcards.chase.com/southwest/performance-business-credit-card) |
39
+ | chase-southwest-plus | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC64433.html) |
40
+ | chase-southwest-premier-business | foreign_transaction_fee | new: none | [creditcards.chase.com card page](https://creditcards.chase.com/southwest/premier-business-credit-card) |
41
+ | chase-southwest-premier | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC64337.html) |
42
+ | chase-southwest-priority | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC64414.html) |
43
+ | chase-united-business | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65426.html) |
44
+ | chase-united-club-business | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65424.html) |
45
+ | chase-united-club | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC62957.html) |
46
+ | chase-united-explorer | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC63218.html) |
47
+ | chase-united-gateway | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65777.html) |
48
+ | chase-united-quest | foreign_transaction_fee | new: none | [sites.chase.com pricing page](https://sites.chase.com/services/creatives/pricingandterms.html/content/dam/pricingandterms/LGC65756.html) |
49
+ | citi-aadvantage-business | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-aadvantage-business-credit-card) |
50
+ | citi-aadvantage-executive | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-aadvantage-executive-world-legend-mastercard) |
51
+ | citi-aadvantage-globe | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-aadvantage-globe-mastercard) |
52
+ | citi-aadvantage-mileup | foreign_transaction_fee | new: 3% | [citi.com card page](https://www.citi.com/credit-cards/aadvantage-mile-up-credit-card) |
53
+ | citi-aadvantage-platinum-select | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-aadvantage-platinum-elite-credit-card) |
54
+ | citi-costco-anywhere-visa-business | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/costco-anywhere-visa-business-card) |
55
+ | citi-costco-anywhere-visa | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-costco-anywhere-visa-credit-card) |
56
+ | citi-custom-cash | foreign_transaction_fee | new: not on file (todo) | no readable page states it |
57
+ | citi-double-cash | foreign_transaction_fee | new: 3% | [citi.com card page](https://www.citi.com/credit-cards/citi-double-cash-credit-card) |
58
+ | citi-my-best-buy-visa | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-best-buy-credit-cards) |
59
+ | citi-strata-elite | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-strata-elite-credit-card) |
60
+ | citi-strata-premier | foreign_transaction_fee | new: none | [citi.com card page](https://www.citi.com/credit-cards/citi-strata-premier-credit-card) |
61
+ | sofi-unlimited-2 | foreign_transaction_fee | new: none | [sofi.com card page](https://www.sofi.com/credit-card/unlimited/) |
62
+ | td-bank-nordstrom-credit-card | foreign_transaction_fee | new: not on file (todo) | no readable page states it |
63
+ | td-bank-nordstrom-visa | foreign_transaction_fee | new: not on file (todo) | no readable page states it |
64
+ | td-bank-target-circle-card | foreign_transaction_fee | new: not on file (todo) | no readable page states it |
65
+ | usbank-cash-plus | foreign_transaction_fee | new: 3% | [onboarding.usbank.com pricing page](https://onboarding.usbank.com/gateway/partner/credit-card/begin?locationCode=8069&offerId=WRH8D23H2R&sourceCode=88256&page=terms) |
66
+ | wells-fargo-active-cash | foreign_transaction_fee | new: 3% | [wellsfargo.com pricing page](https://www.wellsfargo.com/credit-cards/active-cash/terms/) |
67
+ | wells-fargo-autograph | foreign_transaction_fee | new: none | [wellsfargo.com pricing page](https://www.wellsfargo.com/credit-cards/autograph-visa/terms/) |
68
+ | bank-of-america-atmos-rewards-summit | foreign-purchases | new rule: 3x on purchases outside the U.S. (3.3x with a BofA account); todo removed | [BofA terms](https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US) |
69
+
70
+ ## 2026.11.03.2
71
+
72
+ Streaming bonuses that only count an issuer's list now match the merchants on that list, not every streaming service. Blue Cash Preferred follows Amex's Select U.S. Streaming Subscriptions list (read 2026-11-03), so Showtime no longer earns 6% and Audible now does. United Quest and IHG One Rewards follow Chase's select streaming list, the one Sapphire Preferred already used, so services off it (Amazon Prime Video, DIRECTV STREAM, MLB.TV, NBA League Pass, STARZ, TIDAL and others) earn their base rates. IHG One Rewards' bills rule is split from its streaming rule; its rates don't change.
73
+
74
+ | Card | Field | Old → new | Source |
75
+ | ------------------------ | -------------------------------- | ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
76
+ | amex-blue-cash-preferred | us-streaming | the streaming category → the 25 listed services earnrate knows | [Amex Select U.S. Streaming list](https://www.americanexpress.com/us/content/rewards-info/retail.html) |
77
+ | chase-united-quest | streaming | the streaming category → Chase's select list | [Chase rewards category FAQ](https://www.chase.com/personal/credit-cards/rewards-category-faq) |
78
+ | chase-ihg-one-rewards | bills-and-streaming-through-2026 | split into bills-through-2026 (categories) and streaming-through-2026 (Chase's list) | [Chase rewards category FAQ](https://www.chase.com/personal/credit-cards/rewards-category-faq) |
79
+
80
+ ## 2026.11.03.1
81
+
82
+ The merchant directory grows from 168 to 385 entries (217 added), from a list of about 300 well-known U.S. merchants in `docs/benchmark-merchants.txt` (the largest chains in each category, from public rankings, plus common online services). Marriott, Hilton and IHG also gain their hotel brands as aliases (Courtyard, Sheraton, Hampton Inn, DoubleTree and so on), and IHG answers to "IHG". No card rules or rates changed.
83
+
84
+ Amazon Music Unlimited and Discovery+ are added as streaming: both are on [Amex's Select U.S. Streaming Subscriptions list](https://www.americanexpress.com/us/content/rewards-info/retail.html), which Blue Cash Preferred's 6% requires (read 2026-11-03). "Amazon Music" used to match Amazon itself. Crunchyroll and Philo stay out: they aren't on that list. Wayfair may also code as a furniture store.
85
+
86
+ Plain categories come from what the business is. Where a merchant codes unexpectedly it's in `overrides.yaml` with a note, and the category follows the issuers' own definitions: [Chase's rewards category FAQ](https://www.chase.com/personal/credit-cards/rewards-category-faq), [U.S. Bank's Cash+ sample merchants](https://cashplus.usbank.com/cash-plus/samplemerchants) and the Amex online-retail wording already quoted in `amex-blue-cash-everyday.yaml`.
87
+
88
+ | Category | Added | Source for the category |
89
+ | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
90
+ | Supermarkets | Publix, H-E-B, Food Lion, Stop & Shop, Giant Food, Hannaford, Wegmans, Lidl, WinCo Foods, Hy-Vee, Giant Eagle, Winn-Dixie, ShopRite, Price Chopper, Raley's, Harris Teeter, Smith's, King Soopers, Fry's Food Stores, Dillons, QFC, Mariano's | Supermarkets |
91
+ | Online grocery | FreshDirect | An online grocery store |
92
+ | Warehouse clubs | BJ's Wholesale Club (override), BJ's Gas (override, gas at a warehouse club) | Chase: grocery leaves out "warehouse clubs"; online grocery names "wholesale clubs such as Costco and BJs" |
93
+ | Everything else | Dollar General, Dollar Tree, Family Dollar (overrides: discount stores that sell groceries), Five Below, Ollie's Bargain Outlet | Chase: grocery leaves out "discount stores" |
94
+ | Everything else, online retail on their sites | Petco, PetSmart, Ulta Beauty, Sephora, Michaels, Hobby Lobby, AutoZone (overrides) | Amex Blue Cash Everyday: "U.S. merchants selling physical goods, paid on their website or app" |
95
+ | Online retail | Chewy, Wayfair (both named by Amex), Zappos (overrides) | Amex Blue Cash Everyday's online-retail examples |
96
+ | Gas | BP, Marathon, Sunoco, Valero, Citgo, Phillips 66; Wawa, Sheetz, Circle K, Casey's, QuikTrip, RaceTrac, Speedway, Cumberland Farms, Kwik Trip, Maverik, Holiday Stationstores (overrides: may code as a convenience store where there are no pumps) | Chase: gas "paid for either at the pump or inside the station"; U.S. Bank lists QuikTrip, Speedway, Holiday, Maverik and Kum & Go as gas |
97
+ | EV charging | EVgo, Blink Charging | U.S. Bank lists both under gas and EV charging |
98
+ | Restaurants | Olive Garden, Applebee's, Chili's, Texas Roadhouse, Outback Steakhouse, Red Lobster, Buffalo Wild Wings, Cracker Barrel, IHOP, Denny's, LongHorn Steakhouse, Red Robin, P.F. Chang's, BJ's Restaurant & Brewhouse, Waffle House, TGI Fridays, Ruby Tuesday, Bob Evans, Carrabba's, Hooters, Twin Peaks, Yard House, Maggiano's, Bonefish Grill, Pizza Hut | Full-service chains; U.S. Bank lists Pizza Hut under Restaurants |
99
+ | Restaurants (delivery) | Grubhub (with Seamless), Postmates (overrides) | U.S. Bank lists them under Restaurants; Chase's "directly from a restaurant" category leaves out third-party delivery |
100
+ | Fast food | Wendy's, Dunkin', Burger King, Subway, Domino's, Sonic, Popeyes, KFC, Dairy Queen, Jersey Mike's, Arby's, Little Caesars, Papa John's, Jack in the Box, Whataburger, Panda Express, Raising Cane's, Wingstop, Culver's, Zaxby's, Jimmy John's, Firehouse Subs, Bojangles, Dutch Bros, Qdoba, Del Taco, El Pollo Loco, Carl's Jr.; Five Guys, Shake Shack, Tropical Smoothie Cafe (overrides: may code as restaurants) | U.S. Bank's fast food list (Wendy's, Burger King, Subway, Domino's, Sonic, KFC, Dairy Queen, Arby's, Jack in the Box, Panda Express, Culver's, Jimmy John's, Qdoba, Carl's Jr.); counter-service chains otherwise. It lists Smashburger under Restaurants, hence the overrides |
101
+ | Drugstores | Duane Reade | A Walgreens drugstore |
102
+ | Department stores | JCPenney, Dillard's, Belk, Bloomingdale's, Saks Fifth Avenue, Saks Off 5th | U.S. Bank's department store list (all but Belk) |
103
+ | Clothing | Lululemon, Abercrombie & Fitch, Hollister, Urban Outfitters, Anthropologie, Free People | Clothing stores. None is on Cash+'s select clothing list, which matches by merchant |
104
+ | Electronics | Micro Center, Newegg | U.S. Bank lists Newegg.com |
105
+ | Sporting goods | Academy Sports + Outdoors, Bass Pro Shops, Cabela's, Big 5, Hibbett, Scheels | U.S. Bank's sporting goods list (Cabela's notes that Cabelas.com doesn't count) |
106
+ | Home improvement | Menards, Ace Hardware, True Value | Chase: "from larger home improvement stores to smaller hardware stores" |
107
+ | Furniture | Ashley, Rooms To Go, Bob's Discount Furniture, La-Z-Boy, Ethan Allen, RH, Havertys | U.S. Bank's furniture list (all but Rooms To Go and Havertys) |
108
+ | Shipping | DHL | A courier |
109
+ | Transit | Amtrak, Greyhound, MTA, BART, NJ Transit, SEPTA, MBTA, Metra; ParkMobile, SpotHero (overrides, MCC 7523) | Chase's transit includes trains, buses and parking; U.S. Bank's ground transportation lists Amtrak, Greyhound and Metra and leaves out parking |
110
+ | Flights | JetBlue, Spirit Airlines, Frontier Airlines, Allegiant Air, Sun Country Airlines | Airlines |
111
+ | Hotels | Hyatt, Wyndham, Choice Hotels, Best Western, Motel 6, Red Roof, each with its brands as aliases | Hotels |
112
+ | Car rental | Avis, Budget, National, Alamo, Thrifty, Dollar | Car rental agencies |
113
+ | Travel (agencies) | Hotels.com, Priceline, Orbitz, Travelocity, Hopper; Booking.com (override: pay-at-property stays code as a hotel) | Chase: hotel-direct and airline-direct bonuses leave out "travel agencies, discount travel sites" |
114
+ | Cruises | Carnival, Royal Caribbean, Norwegian, Princess, Disney Cruise Line, Celebrity | Cruise lines |
115
+ | TV and internet | Cox, Optimum, DIRECTV, DISH, Frontier Communications | U.S. Bank lists DIRECTV and DISH under TV and internet |
116
+ | Cell phone | Cricket, Metro by T-Mobile, Boost Mobile, Visible, Mint Mobile; AT&T (override: an AT&T Internet bill is TV and internet) | U.S. Bank's cell phone list (Cricket, MetroPCS, Boost, AT&T Wireless) |
117
+ | Utilities | PG&E, Con Edison, Duke Energy, Dominion Energy, Georgia Power, Florida Power & Light | U.S. Bank's home utilities list (PG&E, Duke Energy) |
118
+ | Movie theaters | Cinemark, Marcus Theatres, Harkins Theatres; Alamo Drafthouse (override: in-seat dining) | U.S. Bank's movie theater list (Cinemark, Harkins) |
119
+ | Entertainment | Ticketmaster, Live Nation | Ticket sellers for live events |
120
+ | Gyms | LA Fitness, Anytime Fitness, Crunch Fitness, Orangetheory, Equinox, Life Time | U.S. Bank's gym list |
121
+
122
+ ## 2026.11.03
123
+
124
+ Spend milestones: bonuses a card pays once a year after a spending total. The four IHG cards list theirs. Only the bonus points are valued, and only when tracked spending shows a purchase reaching the total; status, Elite Night Credits and free nights are shown, not valued.
125
+
126
+ | Card | Field | Old → new | Source |
127
+ | ------------------------------------ | -------------------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
128
+ | chase-ihg-one-rewards | milestones.spend-15k | new: 10,000 points and Gold Elite status after $15,000 a calendar year | [Chase IHG One Rewards page](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/one-rewards) |
129
+ | chase-ihg-one-rewards-premier | milestones.spend-15k | new: 15,000 points, Platinum Elite status and 5 Elite Night Credits after $15,000 a calendar year | [Chase IHG Premier page](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier) |
130
+ | chase-ihg-one-rewards-premier | milestones.spend-40k | new: Diamond Elite status after $40,000 a calendar year | [Chase IHG Premier page](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier) |
131
+ | chase-ihg-one-rewards-premier-select | milestones.spend-15k | new: 20,000 points and 5 Elite Night Credits after $15,000 a calendar year | [Chase IHG Premier Select page](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier-select) |
132
+ | chase-ihg-one-rewards-premier-select | milestones.spend-25k | new: Diamond Elite status after $25,000 a calendar year | [Chase IHG Premier Select page](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier-select) |
133
+ | chase-ihg-one-rewards-premier-select | milestones.spend-40k | new: a free night (up to 60,000 points) after $40,000 a calendar year | [Chase IHG Premier Select page](https://creditcards.chase.com/travel-credit-cards/ihg-rewards-club/premier-select) |
134
+ | chase-ihg-one-rewards-business | milestones.spend-25k | new: 20,000 points and 5 Elite Night Credits after $25,000 a calendar year | [Chase IHG Business page](https://creditcards.chase.com/business-credit-cards/IHG/business) |
135
+ | chase-ihg-one-rewards-business | milestones.spend-60k | new: a free night (up to 50,000 points) after $60,000 a calendar year | [Chase IHG Business page](https://creditcards.chase.com/business-credit-cards/IHG/business) |
136
+ | all four IHG cards | todo | removed the "Not modeled" spend-milestone notes; added the 2027 milestones that aren't listed yet | n/a |
137
+
5
138
  ## 2026.11.02.5
6
139
 
7
140
  Prime Visa's 3% without-Prime rate no longer applies at Whole Foods stores outside the U.S. Chase's terms exclude "purchases made at international Whole Foods Markets" from both the 5% and the 3% rate; only the 5% rule was U.S.-only.
package/data/VERSION CHANGED
@@ -1 +1 @@
1
- 2026.11.02.5
1
+ 2026.11.03.3
@@ -11,6 +11,7 @@ source_urls:
11
11
  base_rate: 1
12
12
  business: true
13
13
  annual_fee: 0
14
+ foreign_transaction_fee: 2.7
14
15
  welcome_offer:
15
16
  points: 50000
16
17
  spend: 5000
@@ -69,3 +70,6 @@ evidence:
69
70
  - rule: welcome_offer
70
71
  url: https://www.americanexpress.com/us/credit-cards/business/business-credit-cards/american-express-blue-business-plus-credit-card-amex/
71
72
  quote: 'after you spend $5,000 in purchases on your new Card within the first 3 months of Card Membership'
73
+ - rule: foreign_transaction_fee
74
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/business/prospect/bluebusinessplus-credit-card/45094-9-0
75
+ quote: 'Foreign Transaction 2.7% of each transaction after conversion to US dollars'
@@ -11,6 +11,7 @@ source_urls:
11
11
  - https://www.americanexpress.com/us/content/rewards-info/retail.html
12
12
  base_rate: 1
13
13
  annual_fee: 0
14
+ foreign_transaction_fee: 2.7
14
15
  welcome_offer:
15
16
  dollars: 200
16
17
  spend: 2000
@@ -95,5 +96,8 @@ evidence:
95
96
  - rule: not_with
96
97
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/blue-cash-everyday-credit-card/25330-10-0
97
98
  quote: 'if you have or have had this Card, the Cash Magnet® Card, the Blue Cash Preferred® Card'
99
+ - rule: foreign_transaction_fee
100
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/blue-cash-everyday-credit-card/25330-10-0
101
+ quote: 'Foreign Transaction 2.7% of each transaction after conversion to US dollars'
98
102
  todo:
99
103
  - "Amex's online retail examples name Walmart.com and drug stores, so superstore and drugstore sites earn 3% here; online grocery orders don't, but a grocery order on walmart.com or target.com can't be told apart from other purchases there. Warehouse club sites (costco.com, samsclub.com) aren't named, so they aren't modeled."
@@ -12,6 +12,7 @@ source_urls:
12
12
  base_rate: 1
13
13
  annual_fee: 95
14
14
  first_year_fee: 0
15
+ foreign_transaction_fee: 2.7
15
16
  welcome_offer:
16
17
  dollars: 300
17
18
  spend: 3000
@@ -27,11 +28,40 @@ rules:
27
28
  cap: { amount: 6000, period: calendar_year, then_rate: 1 }
28
29
  note: Superstores, convenience stores, warehouse clubs and meal-kit delivery services are not supermarkets.
29
30
  - id: us-streaming
30
- match: { categories: [streaming] }
31
- exclude: { merchants: [fandango-at-home] }
31
+ match:
32
+ {
33
+ merchants:
34
+ [
35
+ amazon-music,
36
+ apple-music,
37
+ apple-tv,
38
+ audible,
39
+ directv-stream,
40
+ discovery-plus,
41
+ disney-plus,
42
+ espn,
43
+ fubotv,
44
+ max,
45
+ hulu,
46
+ mlb-tv,
47
+ nba-league-pass,
48
+ netflix,
49
+ pandora,
50
+ paramount-plus,
51
+ peacock,
52
+ amazon-prime-video,
53
+ sling-tv,
54
+ siriusxm,
55
+ spotify,
56
+ starz,
57
+ tidal,
58
+ youtube-premium,
59
+ youtube-tv,
60
+ ],
61
+ }
32
62
  rate: 6
33
63
  geography: us_only
34
- note: Only providers on Amex's Select U.S. Streaming Subscriptions list (americanexpress.com/rewards-info), such as Netflix, Hulu, Disney+, HBO Max, Spotify, Apple Music, YouTube TV and SiriusXM. Subscriptions bundled with or billed by another company (cable, phone, a car maker) may not count.
64
+ note: Only providers on Amex's Select U.S. Streaming Subscriptions list (americanexpress.com/rewards-info, read 2026-11-03). The list also names AMC+, Britbox, iHeartRadio, Kindle Unlimited, Luminary and MGM+, which earnrate doesn't know as stores yet. Subscriptions bundled with or billed by another company (cable, phone, a car maker) may not count.
35
65
  - id: transit
36
66
  match: { categories: [transit] }
37
67
  rate: 3
@@ -86,3 +116,6 @@ evidence:
86
116
  - rule: welcome_offer
87
117
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/blue-cash-preferred-credit-card/25330-10-0#offer-terms
88
118
  quote: 'As High As $300 Cash Back Welcome Offer'
119
+ - rule: foreign_transaction_fee
120
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/blue-cash-preferred-credit-card/25330-10-0#offer-terms
121
+ quote: 'Foreign Transaction 2.7% of each transaction after conversion to US dollars'
@@ -11,6 +11,7 @@ source_urls:
11
11
  - https://www.americanexpress.com/us/content/rewards-info/retail.html
12
12
  base_rate: 1
13
13
  annual_fee: 325
14
+ foreign_transaction_fee: 0
14
15
  welcome_offer:
15
16
  points: 100000
16
17
  spend: 8000
@@ -113,3 +114,6 @@ evidence:
113
114
  - rule: not_with
114
115
  url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/gold-card/25330-10-0#offer-terms
115
116
  quote: 'if you have or have had this Card, the Premier Rewards Gold Card, the Platinum Card'
117
+ - rule: foreign_transaction_fee
118
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/gold-card/25330-10-0#offer-terms
119
+ quote: 'Foreign Transaction None Penalty Fees'
@@ -10,6 +10,7 @@ source_urls:
10
10
  - https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/platinum-card/25330-10-0#offer-terms
11
11
  base_rate: 1
12
12
  annual_fee: 895
13
+ foreign_transaction_fee: 0
13
14
  welcome_offer:
14
15
  points: 175000
15
16
  spend: 12000
@@ -86,3 +87,6 @@ evidence:
86
87
  - rule: welcome_offer
87
88
  url: https://www.americanexpress.com/us/credit-cards/card/platinum/
88
89
  quote: 'after you spend $12,000 in purchases on your new Card within the first 6 months'
90
+ - rule: foreign_transaction_fee
91
+ url: https://www.americanexpress.com/en-us/credit-cards/apply/terms/personal/platinum-card/25330-10-0#offer-terms
92
+ quote: 'Foreign Transaction None Penalty Fees'
@@ -10,6 +10,7 @@ source_urls:
10
10
  - https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081060&productoffercode=RS&locale=en_US
11
11
  base_rate: 1
12
12
  annual_fee: 95
13
+ foreign_transaction_fee: 0
13
14
  welcome_offer:
14
15
  points: 70000
15
16
  spend: 2500
@@ -78,6 +79,9 @@ evidence:
78
79
  - rule: alaska-and-hawaiian-with-boa-account
79
80
  url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081060&productoffercode=RS&locale=en_US
80
81
  quote: 'An active Qualifying Account is an open consumer (non-business) checking or savings account with Bank of America N.A.'
82
+ - rule: foreign_transaction_fee
83
+ url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081060&productoffercode=RS&locale=en_US
84
+ quote: 'Foreign Transaction None Penalty Fee'
81
85
  todo:
82
86
  - 20% back on Alaska and Hawaiian inflight purchases is a rebate, not points, and isn't modeled.
83
87
  - "BofA's rewards page lists Atmos Rewards cards as not eligible for the BofA Rewards tier bonus (in a popup the source check can't read), so the 10% account bonus stands alone."
@@ -11,6 +11,7 @@ source_urls:
11
11
  base_rate: 1
12
12
  business: true
13
13
  annual_fee: 70
14
+ foreign_transaction_fee: 0
14
15
  welcome_offer:
15
16
  points: 70000
16
17
  spend: 4000
@@ -82,6 +83,9 @@ evidence:
82
83
  - rule: alaska-and-hawaiian-with-boa-account
83
84
  url: https://www.bankofamerica.com/smallbusiness/credit-cards/terms-and-conditions/?campaignid=4080500&productoffercode=CX&locale=en_US
84
85
  quote: 'open small business (non-consumer) checking or savings account with Bank of America, N.A.'
86
+ - rule: foreign_transaction_fee
87
+ url: https://www.bankofamerica.com/smallbusiness/credit-cards/terms-and-conditions/?campaignid=4080500&productoffercode=CX&locale=en_US
88
+ quote: 'International Transaction None Penalty Fee'
85
89
  todo:
86
90
  - 'annual_fee is the $70 per-company fee. Each card also costs $25 a year, which the schema has no field for.'
87
91
  - "BofA's rewards page lists Atmos Rewards cards as not eligible for the BofA Rewards tier bonus (in a popup the source check can't read), so the 10% account bonus stands alone."
@@ -10,6 +10,7 @@ source_urls:
10
10
  - https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US
11
11
  base_rate: 1
12
12
  annual_fee: 395
13
+ foreign_transaction_fee: 0
13
14
  welcome_offer:
14
15
  points: 80000
15
16
  spend: 4000
@@ -23,6 +24,11 @@ rules:
23
24
  - id: dining
24
25
  match: { categories: [dining] }
25
26
  rate: 3
27
+ - id: foreign-purchases
28
+ match: { any: true }
29
+ rate: 3
30
+ geography: foreign_only
31
+ note: Purchases outside the U.S. and its territories, or in a foreign currency, including one made online from home. earnrate treats a purchase as foreign when it's made outside the U.S.
26
32
  - id: alaska-and-hawaiian-with-boa-account
27
33
  match: { merchants: [alaska-airlines, hawaiian-airlines] }
28
34
  rate: 3.3
@@ -33,6 +39,12 @@ rules:
33
39
  rate: 3.3
34
40
  requires: { membership: bank-of-america-account }
35
41
  note: 3x plus the 10% rewards bonus for holding an eligible Bank of America account.
42
+ - id: foreign-purchases-with-boa-account
43
+ match: { any: true }
44
+ rate: 3.3
45
+ geography: foreign_only
46
+ requires: { membership: bank-of-america-account }
47
+ note: 3x plus the 10% rewards bonus for holding an eligible Bank of America account.
36
48
  - id: everything-else-with-boa-account
37
49
  match: { any: true }
38
50
  rate: 1.1
@@ -60,6 +72,15 @@ evidence:
60
72
  - rule: everything-else-with-boa-account
61
73
  url: https://www.bankofamerica.com/credit-cards/products/alaska-airlines-infinite-credit-card/
62
74
  quote: '10% rewards bonus on all points earned from card purchases if you have an eligible Bank of America® account'
75
+ - rule: foreign-purchases
76
+ url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US
77
+ quote: 'Earn 3 points for every $1 spent on eligible foreign transaction Net Purchases'
78
+ - rule: foreign-purchases
79
+ url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US
80
+ quote: 'made in U.S. dollars if the transaction is made or processed outside of the United States'
81
+ - rule: foreign-purchases-with-boa-account
82
+ url: https://www.bankofamerica.com/credit-cards/products/alaska-airlines-infinite-credit-card/
83
+ quote: '10% rewards bonus on all points earned from card purchases if you have an eligible Bank of America® account'
63
84
  - rule: annual_fee
64
85
  url: https://www.bankofamerica.com/credit-cards/products/alaska-airlines-infinite-credit-card/
65
86
  quote: '$395 annual fee and no foreign transaction fees'
@@ -72,6 +93,8 @@ evidence:
72
93
  - rule: alaska-and-hawaiian-with-boa-account
73
94
  url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US
74
95
  quote: 'open consumer (non-business) checking, savings or CD account with Bank of America N.A. or an investment account with Merrill'
96
+ - rule: foreign_transaction_fee
97
+ url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4081112&productoffercode=S2&locale=en_US
98
+ quote: 'Foreign Transaction None Penalty Fee'
75
99
  todo:
76
- - '3x on "foreign transaction" purchases (anything charged in a foreign currency or processed abroad) is not modeled: rules have no foreign-only geography. It would make this card the pick for most purchases abroad.'
77
100
  - "BofA's rewards page lists Atmos Rewards cards as not eligible for the BofA Rewards tier bonus (in a popup the source check can't read), so the 10% account bonus stands alone."
@@ -14,6 +14,7 @@ source_urls:
14
14
  - https://www.bankofamerica.com/bofa-rewards/increasing-bofa-rewards-with-credit-cards/
15
15
  base_rate: 1
16
16
  annual_fee: 0
17
+ foreign_transaction_fee: 3
17
18
  welcome_offer:
18
19
  dollars: 200
19
20
  spend: 1000
@@ -209,6 +210,9 @@ evidence:
209
210
  - rule: welcome_offer
210
211
  url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4079537&productoffercode=8H&locale=en_US
211
212
  quote: 'This card may not be available to you if you currently have or have had the card'
213
+ - rule: foreign_transaction_fee
214
+ url: https://www.bankofamerica.com/credit-cards/terms-and-conditions/?campaignid=4079537&productoffercode=8H&locale=en_US
215
+ quote: 'Foreign Transaction 3% of the U.S. dollar amount of each transaction'
212
216
  todo:
213
217
  - New accounts earn 6% in the choice category for the first year (an extra 3%, inside the same $2,500 quarterly cap, with no BofA Rewards bonus on the extra 3%). earnrate can't see when an account was opened, so this isn't modeled.
214
218
  - 'The BofA Rewards rules use proposed membership ids: bofa-rewards-member, bofa-rewards-preferred-plus, bofa-rewards-preferred-honors and bofa-rewards-premier. Cardholders who joined Preferred Rewards before May 26, 2026 may have an "extended card benefit" that Bank of America doesn''t define.'
@@ -13,6 +13,7 @@ source_urls:
13
13
  - https://www.bilt.com/card
14
14
  base_rate: 1
15
15
  annual_fee: 95
16
+ foreign_transaction_fee: 0
16
17
  choices:
17
18
  # Dining is the default. It can be switched once in the first 30 days, then
18
19
  # only in January.
@@ -90,3 +91,6 @@ evidence:
90
91
  - rule: annual_fee
91
92
  url: https://www.bilt.com/card/obsidian
92
93
  quote: '$95 annual fee'
94
+ - rule: foreign_transaction_fee
95
+ url: https://www.bilt.com/card/obsidian
96
+ quote: 'Enjoy no foreign transaction fees when traveling internationally'
@@ -14,12 +14,14 @@ source_urls:
14
14
  # Units are cents of Kohl's rewards per dollar, so 2.5 is 2.5%.
15
15
  base_rate: 0
16
16
  annual_fee: 0
17
+ foreign_transaction_fee: null
17
18
  rules:
18
19
  - id: kohls
19
20
  match: { merchants: [kohls] }
20
21
  rate: 2.5
21
22
  note: Card's own share only. Kohl's Rewards members earn 5% however they pay, and paying with the card raises that to 7.5% ("Earn 5% any way you pay or 7.5% when you use a Kohl's Card", kohls.com/feature/rewards.jsp, checked by hand because kohls.com blocks the weekly check). Kohl's stores and Kohls.com, excluding gift cards. Rewards turn into Kohl's Cash in $5 steps on the 1st of the next month and expire 30 days later.
22
23
  todo:
24
+ - "Foreign transaction fee not on file: Capital One's rates disclosure has no foreign transaction row and no Kohl's page states one. It works only at Kohl's, so it doesn't matter abroad."
23
25
  - Capital One applies everyone for the Kohl's Rewards Visa first; this store-only card is the fallback.
24
26
  - Periodic cardholder discounts aren't modeled. These are monthly savings offers, a yearly anniversary offer and a 40% off new-account coupon.
25
27
  - MVC status ($600 a year at Kohl's on the card) adds free-shipping offers. Not modeled.
@@ -13,6 +13,7 @@ source_urls:
13
13
  # Units are cents of Kohl's rewards per dollar, so 3 is 3%.
14
14
  base_rate: 1
15
15
  annual_fee: 0
16
+ foreign_transaction_fee: null
16
17
  rules:
17
18
  - id: kohls
18
19
  match: { merchants: [kohls] }
@@ -29,6 +30,7 @@ rules:
29
30
  rate: 2
30
31
  note: Groceries at discount stores, superstores, warehouse clubs (e.g. Costco, Walmart) and convenience stores earn 1%.
31
32
  todo:
33
+ - "Foreign transaction fee not on file: Capital One's rates disclosure for the Kohl's cards has no foreign transaction row and no Kohl's page states one."
32
34
  - Earns only when the card is linked to a Kohl's Rewards account.
33
35
  - Rewards turn into Kohl's Cash in $5 steps on the 1st of the next month and expire 30 days later. Kohl's Cash can't be used on Sephora at Kohl's.
34
36
  - Periodic cardholder discounts aren't modeled. These are monthly savings offers, a yearly anniversary offer and a 40% off new-account coupon.
@@ -14,6 +14,7 @@ source_urls:
14
14
  - https://disclosures.capitalone.com/disclosure.42167.en-US.html
15
15
  base_rate: 1
16
16
  annual_fee: 0
17
+ foreign_transaction_fee: 0
17
18
  welcome_offer:
18
19
  dollars: 200
19
20
  spend: 500
@@ -109,3 +110,6 @@ evidence:
109
110
  - rule: welcome_offer
110
111
  url: https://www.capitalone.com/credit-cards/savor/
111
112
  quote: 'Earn a one-time $200 cash bonus once you spend $500 on purchases within the first 3 months'
113
+ - rule: foreign_transaction_fee
114
+ url: https://www.capitalone.com/credit-cards/savor/
115
+ quote: 'Plus, there are no hidden or foreign transaction fees'