---
title: "Loyalty points turned into donations"
description: "Let customers spend their loyalty points on a donation to the charity they pick, instead of a discount."
canonical: https://www.charitips.com/docs/use-cases/loyalty-points
---

# Loyalty points turned into donations

> Let customers spend their loyalty points on a donation to the charity they pick, instead of a discount.

- **Who pays**: Your company
- **Starts with**: A customer action
- **Tax receipt**: In your company's name
- Needs [API access](https://www.charitips.com/docs/overview/plans.md#api-access-for-webhooks-and-credentials) on a validated account. [Plans](https://www.charitips.com/docs/overview/plans.md#what-every-flow-needs)

Interactive demo on the page. The same flow as a build spec: https://www.charitips.com/docs/demos/loyalty.md

**This demo is one example**: 100 points for 1 €. The same flow also covers:

- [A reward for a loyalty tier](https://www.charitips.com/docs/use-cases/progress-and-tiers.md): Members of a tier unlock the donation reward, or a better rate, as a perk.
- [Expiring points given automatically](https://www.charitips.com/docs/use-cases/gift-card-balance.md#redistribute-expired-cards): Points about to expire become a donation instead of being lost, and the customer is told afterwards.
- [Points from a partner program](https://www.charitips.com/docs/use-cases/loyalty-points.md#redeem-the-points): Points earned with a partner are converted on your side, then given through the same campaign.
- [Show what the points funded](https://www.charitips.com/docs/use-cases/periodic-statement.md#show-it-on-the-statement): Each customer sees their donations in their account, listed by your customer id.
- [A loyalty platform for many brands](https://www.charitips.com/docs/use-cases/account-hierarchy.md): Each brand you serve gets a child account and pays for the donations of its own members.

**Variants**: the same flow in other sectors, each with its build spec.

- [Store loyalty points](https://www.charitips.com/docs/use-cases/loyalty-points/loyalty-points.md) (Retail): A store lets customers spend loyalty points on a charity at the voucher rate, 100 points for 1 €. The customer picks the charity and the points; the store funds the donation. 100 points for 1 €. Build spec: https://www.charitips.com/docs/demos/loyalty.md
- [Unused gift card balance](https://www.charitips.com/docs/use-cases/gift-card-balance.md) (Retail): When a gift card keeps a small balance or is about to expire, the store suggests giving it. The holder picks the charity, the card drops to zero and the store funds the donation. The remaining balance, given by the holder. Build spec: https://www.charitips.com/docs/demos/gift-cards.md
- [Travel loyalty points](https://www.charitips.com/docs/use-cases/loyalty-points/travel-points.md) (Travel and mobility): A travel company lets members give expiring loyalty points at the same rate as flights, 100 points for 5 €. The member picks the charity; the company pays, tier progress stays. 100 points for 5 €. Build spec: https://www.charitips.com/docs/demos/loyalty/travel-points.md
- [Cultural member card](https://www.charitips.com/docs/use-cases/loyalty-points/member-card.md) (Culture and events): A museum's membership card lets members give points about to expire, 100 points for 1 €, to an art or heritage charity. The museum pays; the visit count does not change. 100 points for 1 €. Build spec: https://www.charitips.com/docs/demos/loyalty/member-card.md
- [In-game currency](https://www.charitips.com/docs/use-cases/loyalty-points/game-currency.md) (Software and apps): A game lets players convert in-game gems into a real donation at a fixed rate. The player picks the charity; the studio pays, and level, items and season pass stay untouched. Virtual currency at a fixed rate. Build spec: https://www.charitips.com/docs/demos/loyalty/game-currency.md
- [Solidarity items in an in-game shop](https://www.charitips.com/docs/use-cases/loyalty-points/in-game-shop.md) (Culture and events): In a game's shop, some items are tied to a charity. When the player buys one with gems earned in play, the studio gives 1 € or 2 € for it; the player never pays. 1 € or 2 € from the studio for each solidarity item bought. Build spec: https://www.charitips.com/docs/demos/loyalty/in-game-shop.md
- [Employee solidarity voucher](https://www.charitips.com/docs/use-cases/loyalty-points/solidarity-voucher.md) (Professional services): An employer funds a 60 € solidarity voucher for each employee. In the benefits portal, the employee gives all or part of it to the charity they pick; the rest stays for later. A 60 € voucher funded by the employer, given all or part. Build spec: https://www.charitips.com/docs/demos/loyalty/solidarity-voucher.md

## Build it
- **Calls**: [`create-charities-selection`](https://www.charitips.com/docs/api-reference/create-charities-selection.md), [`create-campaign`](https://www.charitips.com/docs/api-reference/create-campaign.md), [`activate-campaign`](https://www.charitips.com/docs/api-reference/activate-campaign.md), [`create-donation`](https://www.charitips.com/docs/api-reference/create-donation.md), [`claim-donation`](https://www.charitips.com/docs/api-reference/claim-donation.md)
- **Webhooks**: `donation_create`, `donation_update`

### Set up the rewards campaign

Once, set up a campaign as in [steps 3 to 5 of Your first donation](https://www.charitips.com/docs/get-started/first-donation.md#3-pick-your-charities): a charities selection with the charities you offer as rewards, a campaign created with its `charitiesSelectionId`, then activated.

### Add the reward to your program

Add a reward to your loyalty program that converts points into a donation, at a rate you set. Your users only see your points: the API takes the converted amount in cents (see [Donations in your own currency](https://www.charitips.com/docs/concepts/your-own-currency.md)). On your rewards page, the customer picks the charity first, then the points, and confirms once.

### Redeem the points

Create one donation for the converted amount with the chosen `charityId`: it is assigned at once, with no separate claim. Use the id of the redemption in your system as `uniqueExternalId`, so a retry never donates twice for the same points. Then take the points off in your system. Your store funds the donation at the rate of its vouchers, and the fiscal receipt goes to your company.

```bash
curl -X POST https://api.sandbox.charitips.com/v1/donations \
  -H "Authorization: Bearer $CHARITIPS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "campaignId": "<campaignId>",
    "amount": 500,
    "charityId": "<charityId>",
    "uniqueExternalId": "redemption_88213",
    "externalId": "customer_204"
  }'
```

## Edge cases

- **Taking the points off fails after the donation was created.** Delete the donation, then show the error. Deleting works until the donation is billed.
- **You want to show the impact.** List the customer's donations with the `externalId` filter, using your customer id as `externalId` on each donation.

## Related pages

- [Campaigns](https://www.charitips.com/docs/concepts/campaigns.md)
- [Donation lifecycle](https://www.charitips.com/docs/concepts/donation-lifecycle.md)
- [Charities and selections](https://www.charitips.com/docs/concepts/charities.md)
