[Cotlet](https://cotlet.dev/index.md) · [Integrations](https://cotlet.dev/integrations.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Use cases](https://cotlet.dev/use-cases.md) · [Security](https://cotlet.dev/security.md) · [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md) · [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [Contact](https://cotlet.dev/contact.md) · [Pricing](https://cotlet.dev/pricing.md) · [Sign up](https://cotlet.dev/signup)

# Fix a Yotpo customer's loyalty points balance

> Check a Yotpo Loyalty customer's earnings and redemptions, then add or deduct points with the right reason so VIP tiers do not move by accident.

Source: https://cotlet.dev/integrations/yotpo-api-mcp-server/fix-loyalty-points

A customer writes in because points vanished after a failed coupon. Fixing it is a few clicks, but the wrong adjustment reason can quietly change the customer's VIP tier.

Cotlet does it in your own Yotpo account with get\_loyalty\_customer, list\_customer\_earnings and adjust\_loyalty\_points, called by your AI agent, an n8n workflow or a script.

[Sign up free](https://cotlet.dev/app/signup?app=yotpo) [All Yotpo tools](https://cotlet.dev/integrations/yotpo-api-mcp-server.md)

Hosted · nothing to install or maintain

## Can Yotpo do this on its own?

Yotpo's Loyalty API has an endpoint to adjust a customer's point balance, with its own API key and GUID (checked 23 Oct 2026). The official MCP does not cover Loyalty. In the admin, the choice of reason is the part people get wrong, because it decides whether total earned points, and with them the tier, change.

## How you do it in Yotpo today

1. In the Yotpo Loyalty admin, open Customers and search by email address, with no spaces before or after it, then click the email to open the profile.
2. The profile has Earnings, Redemptions and Orders tables. Manual point adjustments are hidden from the customer by default in Earnings.
3. The admin clicks Adjust Points in the top-right corner, picks add or deduct, types the amount and picks a reason.
4. The admin writes an explanation, which appears in the customer's Rewards History.
5. For a customer who used a discount and was never charged points, Yotpo points the admin to Give Reward instead, with a coupon from Rewards Program > Ways to redeem.

## How to fix a Yotpo customer's loyalty points balance

Prompt

```
Ana Lopez says a cancelled redemption cost her 150 points. Check her profile and earnings, then add the points back so her tier does not change.
```

1. 01  
### Read the profile first  
get\_loyalty\_customer returns the current balance, total earned, tier and last loyalty activity for the email. A customer who is Not Enrolled stops the job, because there is no balance to fix.
2. 02  
### Find what went wrong  
list\_customer\_earnings shows the earnings with their dates, so the agent can match the missing points to a campaign or order and quote it back to you before touching anything.
3. 03  
### Pick the reason that spares the tier  
The agent chooses refund\_points\_deducted for points lost to a redemption, because it changes the balance only. reward\_customer and remove\_earned\_points also change total earned, so the agent warns you about a possible tier change and asks first.
4. 04  
### Adjust and confirm  
adjust\_loyalty\_points runs with an explanation that mentions the ticket or order. It waits for your OK by default, because points are money to the customer.
5. 05  
### Check the result  
The agent reads the profile again and reports balance, total earned and tier before and after, so you can see that the tier did not move.

### What you get back

Example data

```
Ana Lopez (ana.lopez@example.com), Silver, Member
Balance 90, total earned 1020
Added 150 points, reason Refund points deducted
Balance now 240, total earned 1020, tier unchanged
```

### Other ways to ask

- Remove the 200 points Tom Becker earned from the cancelled order 4810 and tell me if his tier drops.
- Expire the 500 points on this account that should have expired in September.
- List this customer's last earnings and tell me which campaign added the points twice.

## What Yotpo allows, and what to know first

- Reward customer and Remove earned points change both the current balance and total earned points; Refund points deducted, Redeem points for a discount and Manually expire points change the balance only.
- Any adjustment that changes total earned points can move a customer's VIP or Loyalty tier, up when adding and down when removing.
- Points added by hand count the adjustment date as the earned date, so they expire after the validity period counted from that day.
- Adjusting a specific customer's points works on the Free, Pro, Premium and Enterprise plans.
- For changes across many customers, Yotpo points to a CSV import instead of adjusting one profile at a time.

adjust\_loyalty\_points asks for your OK by default. To run it on a schedule without you, switch confirmation off for that tool in your dashboard.

Sources: [Yotpo Help Center: Adjusting a Specific Customer's Points Balance](https://support.yotpo.com/docs/adjusting-a-specific-customers-points-balance) · [Yotpo Help Center: Using the Customers Page in Loyalty & Referrals](https://support.yotpo.com/docs/loyalty-and-referrals-customers-section) · [Yotpo Help Center: Setting up Points Validation and Expiration](https://support.yotpo.com/docs/setting-up-points-expiration) · [Yotpo Loyalty API: Adjust a customer's point balance](https://loyaltyapi.yotpo.com/reference/adjust-a-customers-point-balance)

## Call adjust\_loyalty\_points from a script

curl

```
curl -X POST https://cotlet.dev/api/v1/yotpo/loyalty-points/adjust \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"ana.lopez@example.com","direction":"add","points":150,"reason":"refund_points_deducted","note":"Points lost to a cancelled redemption, support ticket 4821"}'
```

Example response

```
{
"email": "ana.lopez@example.com",
"direction": "add",
"points": 150,
"reason": "refund_points_deducted",
"points_balance": 240,
"points_earned_total": 1020,
"tier": "Silver"
}
```

MCP: add https://cotlet.dev/mcp/v1 with the same key; the call is yotpo\_write → adjust\_loyalty\_points. Example data.

[Schedule it in n8n, Make, Zapier or cron](https://cotlet.dev/integrations/yotpo-api-mcp-server.md#automations)

## Yotpo tools this automation uses

__Cotlet Yotpo tools used to fix a Yotpo customer's loyalty points balance__
| Tool | Parameters |
| ------------------------ | -------------------------------------- |
| get\_loyalty\_customer | email |
| list\_customer\_earnings | email, since |
| adjust\_loyalty\_points | email, direction, points, reason, note |

[All 13 Yotpo tools with descriptions](https://cotlet.dev/integrations/yotpo-api-mcp-server.md#tools)

## Frequently asked questions

### Is it safe to connect Yotpo to Cotlet?

Yes. You sign in to Yotpo yourself, in your own Cloud Browser in the EU, and we never save your password. Your agents only get Yotpo once you enable it, every background request is listed, and the browser profile is stored encrypted with AES-256-GCM, the cipher 1Password uses for its vaults. The AI model never sees a login, posts and messages wait for your OK, and Disable for agents cuts access in one click. Independent scanners grade cotlet.dev A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory; live results are on https://cotlet.dev/security.

## More Yotpo automations

- [Triage pending Yotpo reviews with AI](https://cotlet.dev/integrations/yotpo-api-mcp-server/triage-pending-reviews.md)
- [Reply to Yotpo reviews with AI](https://cotlet.dev/integrations/yotpo-api-mcp-server/reply-to-reviews.md)
- [Yotpo API and MCP server: every tool](https://cotlet.dev/integrations/yotpo-api-mcp-server.md)
- [All use cases](https://cotlet.dev/use-cases.md)

## Give your agent access to Yotpo.

Free 7-day trial with 2,000 credits, no card needed. Cotlet is independent and not affiliated with Yotpo.

[Sign up free](https://cotlet.dev/app/signup?app=yotpo)

---

Give your AI agents your signed-in browser.

**Product:** [Integrations](https://cotlet.dev/integrations.md) · [Use cases](https://cotlet.dev/use-cases.md) · [How it works](https://cotlet.dev/how-it-works.md) · [Pricing](https://cotlet.dev/pricing.md) · [Security](https://cotlet.dev/security.md)

**Resources:** [Blog](https://cotlet.dev/blog.md) · [API docs](https://cotlet.dev/docs.md) · [Help center](https://cotlet.dev/help.md) · [Changelog](https://cotlet.dev/changelog.md) · [GitHub](https://github.com/cotletdev/cotlet)

**Solutions:** [For developers](https://cotlet.dev/for-developers.md) · [For automation agencies](https://cotlet.dev/for-agencies.md)

**Company:** [About](https://cotlet.dev/about.md) · [AI info: company facts](https://cotlet.dev/ai-info.md) · [Contact](https://cotlet.dev/contact.md)

**Legal:** [Terms of service](https://cotlet.dev/terms) · [Privacy policy](https://cotlet.dev/privacy) · [Refund policy](https://cotlet.dev/refunds) · [Acceptable use](https://cotlet.dev/acceptable-use) · [Cookie policy](https://cotlet.dev/cookies) · [DPA](https://cotlet.dev/dpa) · [Subprocessors](https://cotlet.dev/subprocessors)

**Elsewhere:** [Status page](https://status.cotlet.dev) · [Cotlet on GitHub](https://github.com/cotletdev) · [Cotlet on X](https://x.com/cotletdev) · [Cotlet on LinkedIn](https://www.linkedin.com/company/cotletdev) · [Cotlet on Product Hunt](https://www.producthunt.com/products/cotlet) · [Cotlet on Crunchbase](https://www.crunchbase.com/organization/cotlet) · [Cotlet on SaaSHub](https://www.saashub.com/cotlet)

Cotlet.dev is built by Bart Krawczyk and Jake Slugocki, the founders of Take Group sp. z o.o., ul. Wincentego Janasa 4, 40-855 Katowice, Poland. KRS 0000871398, NIP 6342984273, VAT EU: PL6342984273. [About us](https://cotlet.dev/about.md)

Cotlet is an independent service. It is not affiliated with, endorsed by or sponsored by any of the products listed on this site. Product names are trademarks of their respective owners.
