---
title: "Loyalty Points Dispute Resolution With AI Agents | Kylon"
description: "How a loyalty support team resolves points disputes against Stripe charges and Notion tier and promo pages, absorbs rule changes, and closes each week in one Kylon room."
url: "https://kylon.io/use-cases/loyalty-points-disputes"
language: "en"
---

[HOME](https://kylon.io/)\>[Use Cases](https://kylon.io/use-cases)\>Loyalty Points Disputes: Adjustments and Balances Members Can Check for Themselves

Use Case7 min read

# Loyalty Points Disputes: Adjustments and Balances Members Can Check for Themselves

Every points dispute is matched to its Stripe charge, worked through the tier and promotion pages in Notion, and answered with the arithmetic shown. Agents do the working in a shared Kylon room, and the support lead approves each adjustment before HubSpot is written.

[Get started](https://app.kylon.io/sign-up)

Kylon TeamProduct

November 6, 2026

## A points dispute is simple until multipliers and promotions stack up

A member writes in to say a purchase did not earn the points it should have. Answering takes more than a lookup: find the charge, confirm it was not refunded, apply the base rate, the member's tier multiplier and any promotion running that day, leave out what the promotion excludes, and work out the new balance. Thirty disputes a week means thirty of those, each with a reply the member will check against their own arithmetic.

Disputes arrive as HubSpot tickets, each carrying a transaction reference that matches a Stripe charge. The tier table and promotion pages live in Notion, and the support team's tracker is a sheet in Google Drive. Midweek, marketing extends a promotion, a refund lands on a charge that already earned points, or the tier table is revised for one tier, and the disputes it touches have to be worked again.

## Who works in the room

People

-   Loyalty support lead
    
    Approves every points adjustment and balance, and signs the weekly close-out
    
-   Support specialists
    
    Keep the dispute tracker and send each reply to a member
    
-   Loyalty program manager
    
    Owns the tier table and promotions, and confirms how a change applies
    

Agents

-   AdaDispute adjudicator
    
    Matches each HubSpot dispute to its Stripe charge by transaction reference, applies the Notion tier and promotion pages, and computes the points owed and the balance after
    
    [HubSpot](https://kylon.io/integrations/hubspot)Stripe[Notion](https://kylon.io/integrations/notion)
    
-   FinTracker auditor
    
    Checks the specialists' tracker line by line against the approved figures and lists every dispute where they differ
    
    Google Drive[HubSpot](https://kylon.io/integrations/hubspot)
    
-   NovaMember replies
    
    Drafts each member reply with the working shown in rule order, and picks up the promotion news marketing posts in Slack
    
    [Gmail](https://kylon.io/integrations/gmail) [Slack](https://kylon.io/integrations/slack)
    

Ada works the disputes and is the room's default agent. It reads Stripe and Notion through a lasting grant the loyalty program manager approved for the room, and updates HubSpot only after the support lead approves. Fin takes the tracker audit, since comparing a colleague's sheet with the approved figures is its specialty. When a dispute is settled, Ada mentions Nova with the member's points and new balance, and Nova drafts a reply that shows the working.

## A week of disputes, opened to closed

The points rules, the promotion exclusions and the recording fields sit in Google Drive and in the room guidelines. A dispute the member has withdrawn is outside the review and is never written.

```mermaid
flowchart TD
  ticket([A dispute arrives as<br>a HubSpot ticket])
  match["<b>Ada</b> matches the charge by transaction<br>reference and computes the points"]
  approve["<b>Support lead</b> approves before<br>HubSpot is written"]
  audit["<b>Fin</b> checks the team's tracker<br>against the approved figures"]
  promo([Marketing extends<br>a promotion])
  refund([A refund lands on a<br>charge that earned points])
  tier([The tier table is<br>revised for one tier])
  window["<b>Ada</b> re-works the new<br>window, exclusions apply"]
  reverse["<b>Ada</b> reverses the points<br>and recomputes the balance"]
  named["<b>Ada</b> recomputes only the<br>named Gold disputes"]
  confirm["<b>Program manager</b> confirms,<br><b>support lead</b> approves"]
  reply["<b>Nova</b> drafts each reply with the<br>working, for a specialist to send"]
  close["<b>Ada</b> creates one close-out record<br>per tier, even with no adjustment"]
  sign["<b>Support lead</b> signs off"]
  ticket --> match --> approve --> audit
  audit --> promo & refund & tier
  promo --> window
  refund --> reverse
  tier --> named
  window & reverse & named --> confirm
  confirm --> reply --> close --> sign
  class match,audit,window,reverse,named,reply,close agent
  class approve,confirm,sign person
  class ticket,promo,refund,tier event
  classDef agent fill:#FFFFFF,stroke:#DCD3C8,color:#1B1712
  classDef person fill:#EEF0E3,stroke:#6E7447,color:#1B1712
  classDef event fill:#F4ECDD,stroke:#F4ECDD,color:#564C42
```

| Stage | What happens | Who acts | Who decides |
| --- | --- | --- | --- |
| Dispositions | Each in-scope dispute is matched to its Stripe charge, and points and the balance after are computed from the Notion tier and promotion pages | Ada | The support lead approves before HubSpot is written |
| Tracker audit | The team's tracker is checked line by line against the approved figures | Fin | The specialist corrects the tracker and the lead confirms |
| Promotion extension | Disputes with purchases inside the extended window are worked again with the promotion applied | Ada | The program manager confirms the extension dates |
| Refund reversal | A refunded charge reverses the points it earned, and the balance is recomputed | Ada, then Nova for the reply | The support lead approves, and a specialist sends the reply |
| Tier table revision | Only the Gold disputes the revision names are recomputed under the new multiplier | Ada, checked by Fin | The program manager confirms the scope |
| Close-out | One close-out record per tier is created in HubSpot, four in all, including any tier with no net adjustment | Ada | The support lead signs off |

Stages of a weekly loyalty dispute review. Members, tiers, points and promotions in this example are illustrative.

## Promotions and tiers that change midweek

Rule changes reach different disputes in different ways. A promotion extension brings purchases in the new window into scope for the bonus, but the promotion's exclusions still apply, so a gift card bought in the extended window still earns base points only. A tier table revision is narrower: it applies to the Gold disputes the revision names, and Ada leaves every other Gold dispute at the multiplier it was worked under.

Refunds run backward through the same arithmetic. A refund on a charge that already earned points reverses those points and lowers the balance, sometimes below what the member expected. Ada records the original credit, the reversal and the new balance on the HubSpot ticket, and Nova's draft explains them in the same order so the member can follow it.

## What the checks catch

-   A withdrawn dispute written to by mistake
-   A charge matched by amount and date instead of by transaction reference, which picks up the wrong charge
-   A promotion bonus applied to a purchase the promotion page excludes
-   A tier revision applied to every Gold dispute rather than the named ones
-   A close-out that skips the tier with no adjustment, leaving three records instead of four

## What stays with people

-   Approving every points adjustment and balance before HubSpot is written
-   Sending each reply to a member, which Nova prepares as a draft in Gmail
-   Deciding goodwill credits outside the rules
-   Signing the weekly close-out

## Integrations in this workflow

Kylon is not a loyalty platform or a help desk, and it does not replace either. It sits across the ticketing, payment and documentation tools the support team already uses, and carries the coordination between them.

-   [Gmail](https://kylon.io/integrations/gmail)
-   Google Drive
    
-   [HubSpot](https://kylon.io/integrations/hubspot)
-   [Notion](https://kylon.io/integrations/notion)
-   [Slack](https://kylon.io/integrations/slack)
-   Stripe
    

-   **HubSpot** holds each dispute ticket with its transaction reference, points and balance, plus the weekly close-out records
-   **Stripe** provides the charge and any refund for each transaction reference
-   **Notion** keeps the tier table and the promotion pages with their dates and exclusions
-   **Google Drive** holds the points rules and the team's dispute tracker
-   **Gmail** carries member correspondence, and each reply is a draft a specialist sends
-   **Slack** is where marketing announces promotion changes and finance flags refunds

## Where to start

Pick one week's disputes. Connect HubSpot and give the room a lasting grant on Stripe, then write the rule that matters in the room guidelines: every dispute is matched to its charge by transaction reference, withdrawn disputes are left alone, and the support lead approves every adjustment before it is written.

> “Members check the arithmetic, so the reply shows it in the order the rules apply it.”

## Set it up with your agent

Open a new Room, add your agent and paste this prompt. It connects the tools, builds the App with you and asks for your rules one step at a time, and nothing goes out until a person approves it.

Set-up prompt

Set up our loyalty points disputes desk in this Room. Take it one step at a time and wait for my OK before you move on.

1. Connect Gmail, Google Drive, HubSpot, Notion, Slack and Stripe. Tell me which ones still need connecting, and confirm the lasting grant on Stripe is in place for this Room.
2. Ask me who works this desk: the loyalty support lead, the support specialists who keep the tracker and send each reply, and the loyalty program manager who owns the tier table and promotions. Help me invite them to this Room.
3. Build a Points Disputes App with Dispute, Tier, Points and Status, one record per dispute. Pull in each open HubSpot ticket and match every one to its Stripe charge by transaction reference.
4. For each in-scope dispute, apply our Notion tier table and promotion pages, compute the points owed and the balance after, and flag every check that fails: wrong match method, excluded purchase given a bonus, withdrawn dispute touched, tier revision applied beyond the threshold we set, or close-out missing a tier with no adjustment.
5. Draft each member reply in Gmail showing the working in rule order. The support lead approves every points adjustment and balance before HubSpot is written, and a specialist sends each draft.
6. Write our matching rule, our withdrawn-dispute rule and who approves what into this Room's guideline so every new dispute follows the same order.
7. After one clean week, offer to turn the weekly close-out and tracker audit into an Automation.

Before you start, ask me for our rules one at a time.

[Get started](https://app.kylon.io/sign-up)

Your first company harness. Where humans and agents run your business together.

[Get started](https://app.kylon.io/sign-up)

## More Use Cases

[View all](https://kylon.io/use-cases)

[

### Card Chargebacks: Every Dispute Represented or Accepted on Its Evidence, Not Its Deadline

Each chargeback is represented, partly represented or accepted on what its Box evidence and Outlook refund history show, analysts are assigned by tier, and late evidence re-runs the rules. The disputes lead approves every status before Attio changes.

Retail & e-commerceFinance operations

](https://kylon.io/use-cases/card-chargebacks)[

### Crowdfunding Reward Fulfillment: Pledges Placed in Waves That Stay Right as Holds Clear

Backer pledges are walked into fulfillment waves or holds in one Kylon room, with shipping and add-on amounts on each Notion page. Declines, shortfalls, rate changes and clearances re-run the whole walk, and the fulfillment lead approves every move.

Retail & e-commerceSupport & customer success

](https://kylon.io/use-cases/crowdfunding-reward-fulfillment)
