# Boost credit card adoption with cashback rewards

> Financial institutions and fintech providers can accelerate card adoption and attract new applicants by implementing cashback campaigns. Customers earn cashback rewards based on how much they spend using their new credit card.

> For the complete documentation index, see [llms.txt](https://docs.talon.one/llms.txt).

With
[recurring, user-action achievements](/docs/product/achievements/overview#recurring-user-action-achievements),
you can incentivize new cardholders to maximize their spending and build a habit
of using their card as the preferred payment method for every purchase. These
achievements track cumulative spending and reset automatically, allowing you to
reward high spending habits and drive long-term card adoption.

In this tutorial, let's say you are a fintech company launching a new **Bronze**
credit card for your customers. To drive card adoption and top-of-wallet
behavior, you can create a cashback campaign that rewards customers for reaching
monthly spending targets:
- **Goal**: Drive long-term card use by offering cashback rewards every time the
  customer reaches monthly spend targets of $100, $250, and $400.
- **Duration**: The
  [campaign schedule](/docs/product/campaigns/settings/manage-campaign-schedule)
  runs for a full calendar year:
  - **Start**: January 1, 2026, 00:00
  - **End**: December 31, 2026, 23:59
- **Rewards**: Cashback is awarded monthly based on the cumulative amount spent:
  - Spend $100: Receive a $10 coupon.
  - Spend $250: Receive a $15 coupon.
  - Spend $400: Receive a $20 coupon.

  A customer spending $400 or more receives all three coupons, creating a total
  of $45 in cashback value. This type of reward creates a 10-12% cashback rate.

## Set up the achievements and rules

<StepsContainer>

### Prepare your environment

Create a
[standard campaign](/docs/product/campaigns/overview#standard-campaigns)
named `Cashback Rewards` with the **Achievements** and **Coupons** features
enabled. We will define the rules for this campaign later in this tutorial.

Next, you can set a start and end date for the campaign:
  1. On the left-side menu of your campaign, click <Settings className="icon" />
     **Settings** > **Schedule**, and set:
      - **Start time**: January 1, 2026, 00:00
      - **End time**: December 31, 2026, 23:59
  1. Click **Save Schedule**.

Before setting up the rules, we will create three achievements to track a
customer's monthly spend. Every purchase adds to the customer's progress in all
three achievements.

### Create an achievement: Spent $100

Create a
[recurring on expiration, user-action achievement](/docs/product/achievements/create-achievements.md)
named `spent$100` to track the customer's progress toward the $100 spending
goal. The achievement resets every month during the campaign.

- Set the **Target** to `100`. Each $1 spent increases the customer's progress
  by 1. This target value tracks their progress toward the $100 spending goal.
- Select **End progress on achieving target**.
- Select **Reset every**: `1` `month(s)`.
- Select **Last day of the month**.

Later, we will set up the $10 coupon cashback reward for completing the
`spent$100` achievement in the campaign rules.

### Create an achievement: Spent $250

Create a
[recurring on expiration, user-action achievement](/docs/product/achievements/create-achievements.md)
named `spent$250` to track the customer's progress toward the $250 spending
goal. The achievement resets every month during the campaign.

- Set the **Target** to `250`. Each $1 spent increases the customer's progress
  by 1. This target value tracks their progress toward the $100 spending goal.
- Select **End progress on achieving target**.
- Select **Reset every**: `1` `month(s)`.
- Select **Last day of the month**.

Later, we will set up the $15 coupon cashback reward for completing the
`spent$250` achievement in the campaign rules.

### Create an achievement: Spent $400

Create a
[recurring on expiration, user-action achievement](/docs/product/achievements/create-achievements.md)
named `spent$400` to track the customer's progress toward the $400 spending
goal. The achievement resets every month during the campaign.

- Set the **Target** to `400`. Each $1 spent increases the customer's progress
  by 1. This target value tracks their progress toward the $400 spending goal.
- Select **End progress on achieving target**.
- Select **Reset every**: `1` `month(s)`.
- Select **Last day of the month**.

Later, we will set up the $20 coupon cashback reward for completing the
`spent$400` achievement in the campaign rules.

### Create a rule to check for minimum $100 spend

Let's create a rule named `Check $100 spend` to track if the customer spends at
least $100 in any given month during the campaign.

This rule checks the following conditions:
- The `spent$100` achievement is not completed yet.
- The Rule Engine has triggered a `Customer Session Closing` event, confirming
  that the customer completed a purchase order and the
  [session](/docs/dev/concepts/entities/customer-sessions.md#customer-session-states)
  is in `closed` state.
- The session value is greater than or equal to 1.

If all conditions are met, the Rule Engine updates the customer progress in the
`spent$100` achievement by the value of the session total.

#### Rule 1: Conditions

When **all** of these are true:
- **Check customer progress in an achievement**:
  - **Achievement** `spent$100` `is not` `Completed`

- **Check for event types and custom event values**:
  - **Event type**: `Customer Session Closing`

- **Check attribute value**:
  - <Attribute name="Session Total (Current Session)" type="builtin"/>
    `is greater than or equal to` `1`

#### Rule 1: Effects

- **Update customer progress**:
  - **Achievement name**: `spent$100`
  - **Update progress by**: <Attribute name="Session Total" type="builtin"/>

### Create a rule: Award $10 coupon cashback for $100 spend

Let's create a second rule that checks if the `spent$100` achievement has been
completed for a given month and immediately awards the customer with a $10
cashback coupon. The coupon's validity is set to three months after the session.

We can name the rule `Check $100 progress and award $10 coupon`.

#### Rule 2: Conditions

- **Has completed an achievement**:
  - **Achievement name**: `spent$100`

#### Rule 2: Effects

- **Create coupon code**:
  - **Campaign**: `In the current campaign`
  - **Recipient**: `Current Customer`
  - **Redemption limit**: `1`
  - **Discount limit**: `10`

  - **Code pattern**:
    - **Use custom code pattern**:
      - **Code length**: `4`
      - **Character set**: `Numbers and letters`
      - **Prefix**: `SPENT-100-`

  - **Set start and end time**:
    - **Start date**:
      1. Click <Catalog className="icon"/> to **Select a date variable**.
      1. In **Attribute Selector**, select the <Attribute name="Current time"
         type="builtin"/> attribute.
    - **Expiration date**:
      1. Click <Relative className="icon"/> to **Select a relative date**.
      1. Enter and select `3` `month(s) after the session`.

### Create a rule to check for minimum $250 spend

Let's create a rule named `Check $250 spend` to track if the customer spends at
least $250 in any given month during the campaign.

This rule checks the following conditions:
- The `spent$250` achievement is not completed yet.
- The Rule Engine has triggered a `Customer Session Closing` event, confirming
  that the customer completed a purchase order and the
  [session](/docs/dev/concepts/entities/customer-sessions.md#customer-session-states)
  is in `closed` state.
- The session value is greater than or equal to 1.

If all conditions are met, the Rule Engine updates the customer progress in the
`spent$250` achievement by the value of the session total.

#### Rule 3: Conditions

When **all** of these are true:
- **Check customer progress in an achievement**:
  - **Achievement** `spent$250` `is not` `Completed`

- **Check for event types and custom event values**:
  - **Event type**: `Customer Session Closing`

- **Check attribute value**:
  - <Attribute name="Session Total (Current Session)" type="builtin"/>
    `is greater than or equal to` `1`

#### Rule 3: Effects

- **Update customer progress**:
  - **Achievement name**: `spent$250`
  - **Update progress by**: <Attribute name="Session Total" type="builtin"/>

### Create a rule: Award $15 coupon cashback for $250 spend

Let's create a second rule that checks if the `spent$250` achievement has been
completed for a given month and immediately awards the customer with a $15
cashback coupon. The coupon's validity is set to three months after the session.

We can name the rule `Check $250 progress and award $15 coupon`.

#### Rule 4: Conditions

- **Has completed an achievement**:
  - **Achievement name**: `spent$250`

#### Rule 4: Effects

- **Create coupon code**:
  - **Campaign**: `In the current campaign`
  - **Recipient**: `Current Customer`
  - **Redemption limit**: `1`
  - **Discount limit**: `15`

  - **Code pattern**:
    - **Use custom code pattern**:
      - **Code length**: `4`
      - **Character set**: `Numbers and letters`
      - **Prefix**: `SPENT-250-`

  - **Set start and end time**:
    - **Start date**:
      1. Click <Catalog className="icon"/> to **Select a date variable**.
      1. In **Attribute Selector**, select the <Attribute name="Current time"
         type="builtin"/> attribute.
    - **Expiration date**:
      1. Click <Relative className="icon"/> to **Select a relative date**.
      1. Enter and select `3` `month(s) after the session`.

### Create a rule to check for minimum $400 spend

Let's create a rule named `Check $400 spend` to track if the customer spends at
least $400 in any given month during the campaign.

This rule checks the following conditions:
- The `spent$400` achievement is not completed yet.
- The Rule Engine has triggered a `Customer Session Closing` event, confirming
  that the customer completed a purchase order and the
  [session](/docs/dev/concepts/entities/customer-sessions.md#customer-session-states)
  is in `closed` state.
- The session value is greater than or equal to 1.

If all conditions are met, the Rule Engine updates the customer progress in the
`spent$400` achievement by the value of the session total.

#### Rule 5: Conditions

When **all** of these are true:
- **Check customer progress in an achievement**:
  - **Achievement** `spent$400` `is not` `Completed`

- **Check for event types and custom event values**:
  - **Event type**: `Customer Session Closing`

- **Check attribute value**:
  - <Attribute name="Session Total (Current Session)" type="builtin"/>
    `is greater than or equal to` `1`

#### Rule 5: Effects

- **Update customer progress**:
  - **Achievement name**: `spent$400`
  - **Update progress by**: <Attribute name="Session Total" type="builtin"/>

### Create a rule: Award $20 coupon cashback for $400 spend

Let's create a second rule that checks if the `spent$400` achievement has been
completed for a given month and immediately awards the customer with a $20
cashback coupon. The coupon's validity is set to three months after the session.

We can name the rule `Check $400 progress and award $20 coupon`.

#### Rule 6: Conditions

- **Has completed an achievement**:
  - **Achievement name**: `spent$400`

#### Rule 6: Effects

- **Create coupon code**:
  - **Campaign**: `In the current campaign`
  - **Recipient**: `Current Customer`
  - **Redemption limit**: `1`
  - **Discount limit**: `20`

  - **Code pattern**:
    - **Use custom code pattern**:
      - **Code length**: `4`
      - **Character set**: `Numbers and letters`
      - **Prefix**: `SPENT-400-`

  - **Set start and end time**:
    - **Start date**:
      1. Click <Catalog className="icon"/> to **Select a date variable**.
      1. In **Attribute Selector**, select the <Attribute name="Current time"
         type="builtin"/> attribute.
    - **Expiration date**:
      1. Click <Relative className="icon"/> to **Select a relative date**.
      1. Enter and select `3` `month(s) after the session`.

</StepsContainer>

## Related pages

- [Achievements](/docs/product/achievements/overview.md)
- [Create achievements](/docs/product/achievements/create-achievements.md)
