diff --git a/src/components/TransactionDetails/TransactionDetailsReceipt.tsx b/src/components/TransactionDetails/TransactionDetailsReceipt.tsx
index 61dfefbac..6784c1503 100644
--- a/src/components/TransactionDetails/TransactionDetailsReceipt.tsx
+++ b/src/components/TransactionDetails/TransactionDetailsReceipt.tsx
@@ -573,9 +573,23 @@ export const TransactionDetailsReceipt = ({
Eligible for a Peanut Perk!
{(() => {
- const percentage = transaction.extraDataForDrawer.perk.discountPercentage
- const amount = transaction.extraDataForDrawer.perk.amountSponsored
- const amountStr = amount ? `$${amount.toFixed(2)}` : ''
+ const perk = transaction.extraDataForDrawer.perk
+ const percentage = perk.discountPercentage
+ const amount = perk.amountSponsored
+ const isCapped = perk.isCapped
+ const campaignCap = perk.campaignCapUsd
+
+ // If user hit their campaign cap, show special message
+ if (isCapped && campaignCap) {
+ if (amount !== undefined && amount !== null) {
+ return `$${amount.toFixed(2)} cashback — campaign limit reached! 🎉`
+ }
+ return `Campaign limit reached! 🎉`
+ }
+
+ // For non-capped messages, use amountStr
+ const amountStr =
+ amount !== undefined && amount !== null ? `$${amount.toFixed(2)}` : ''
if (percentage === 100) {
return `You received a full refund${amount ? ` (${amountStr})` : ''} as a Peanut Perk.`
diff --git a/src/components/TransactionDetails/transactionTransformer.ts b/src/components/TransactionDetails/transactionTransformer.ts
index 3693d7c0b..3fb403479 100644
--- a/src/components/TransactionDetails/transactionTransformer.ts
+++ b/src/components/TransactionDetails/transactionTransformer.ts
@@ -76,6 +76,9 @@ export interface TransactionDetails {
merchantInfo?: {
promoDescription?: string
}
+ isCapped?: boolean
+ campaignCapUsd?: number
+ remainingCapUsd?: number
}
depositInstructions?: {
amount: string
@@ -524,6 +527,9 @@ export function mapTransactionDataForDrawer(entry: HistoryEntry): MappedTransact
amountSponsored?: number
txHash?: string
merchantInfo?: { promoDescription?: string }
+ isCapped?: boolean
+ campaignCapUsd?: number
+ remainingCapUsd?: number
}
| undefined,
depositInstructions: