---
title: "Progress and tiers"
description: "A counter, a streak or a gauge reaches a tier, a donation unlocks, and the person picks its charity once for every tier that follows."
canonical: https://www.charitips.com/docs/use-cases/progress-and-tiers
---

# Progress and tiers

> A counter, a streak or a gauge reaches a tier, a donation unlocks, and the person picks its charity once for every tier that follows.

- **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/progress/daily-steps.md

**Scenarios this flow covers:**

- [One donation at the end](https://www.charitips.com/docs/use-cases/progress-and-tiers.md#pay-at-the-end): The progress adds up on your side, and one donation with the total goes when the course or the challenge ends.
- [Micro amounts, sent monthly](https://www.charitips.com/docs/use-cases/progress-and-tiers.md#add-up-micro-amounts-per-period): Cents per step add up in your app, and one donation a month carries the total.
- [A team goal](https://www.charitips.com/docs/use-cases/vote-on-a-budget/adoption-goal.md): An internal challenge: when the team reaches its goal, each member picks a charity for their share.
- [The person pays to unlock](https://www.charitips.com/docs/use-cases/b2c/paid-badge.md): A tier unlocks only with a gift of the person's own money, the receipt in their name.

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

- [10 000 steps a day](https://www.charitips.com/docs/use-cases/progress-and-tiers/daily-steps.md) (Banking and insurance): An insurer's app sets aside 0,10 € each day the member reaches 10 000 steps. On the 1st, the month's total goes out as one donation, paid by the insurer, to the member's charity. 0,10 € per day at 10 000 steps, sent monthly. Build spec: https://www.charitips.com/docs/demos/progress/daily-steps.md
- [Gym check-ins](https://www.charitips.com/docs/use-cases/progress-and-tiers/gym-check-ins.md) (Health and sport): Every time a member taps their phone at the gym's front desk, the gym adds 0,50 € to a monthly pot. On the 1st, the pot becomes one donation to the charity the member chose. 0,50 € per check-in, sent monthly. Build spec: https://www.charitips.com/docs/demos/progress/gym-check-ins.md
- [Course modules completed](https://www.charitips.com/docs/use-cases/progress-and-tiers/course-modules.md) (Education): On a training platform, each module passed adds 0,10 € and more to a pot, plus 5 € when the course is complete. The learner picks the charity at the end; the platform pays. 0,10 €, then 0,20 € and up per module, plus 5 € at the end. Build spec: https://www.charitips.com/docs/demos/progress/course-modules.md
- [E-learning path](https://www.charitips.com/docs/use-cases/progress-and-tiers/learning-path.md) (Education): An e-learning path unlocks 0,20 € from the school at each step finished. The learner picks the charity at the first step; every later step goes to the same one. 0,20 € per step completed. Build spec: https://www.charitips.com/docs/demos/progress/learning-path.md
- [Onboarding milestones](https://www.charitips.com/docs/use-cases/progress-and-tiers/onboarding-milestones.md) (Software and apps): A SaaS turns its setup checklist into donations: each step completed unlocks 0,20 € to 1 €, paid by the vendor. The new user picks the charity once, at the first milestone. 0,20 € to 1 € per milestone reached. Build spec: https://www.charitips.com/docs/demos/progress/onboarding-milestones.md
- [Savings tiers](https://www.charitips.com/docs/use-cases/progress-and-tiers/savings-tiers.md) (Banking and insurance): A bank gives 5 € each time a customer's savings pass another 1 000 €. The customer picks the charity on the milestone screen; the money stays in their savings account. 5 € for each 1 000 € saved. Build spec: https://www.charitips.com/docs/demos/progress/savings-tiers.md
- [Game levels](https://www.charitips.com/docs/use-cases/progress-and-tiers/game-levels.md) (Software and apps): In a game, each level gained adds 0,05 € to the day's pot, paid by the studio. At midnight, the server sends the day's pot as one donation to the charity the player chose. 0,05 € per level, sent daily. Build spec: https://www.charitips.com/docs/demos/progress/game-levels.md
- [Weekly health goal](https://www.charitips.com/docs/use-cases/progress-and-tiers/weekly-goal.md) (Software and apps): A wellbeing app gives 1 € each week the user completes four sessions. The user picks the charity at the first goal; every week the streak holds goes to the same charity. 1 € per weekly goal met. Build spec: https://www.charitips.com/docs/demos/progress/weekly-goal.md
- [Follow-up visits on time](https://www.charitips.com/docs/use-cases/progress-and-tiers/follow-up-visits.md) (Health and sport): A health centre gives 1 € for each follow-up visit kept on time, 2 € from the third. The patient checks in on arrival and picks the charity once; later visits keep it. 1 € or 2 € per visit kept on time. Build spec: https://www.charitips.com/docs/demos/progress/follow-up-visits.md
- [Game milestones for a chosen charity](https://www.charitips.com/docs/use-cases/progress-and-tiers/game-milestones.md) (Software and apps): In any game, the player picks a charity before playing. Each milestone adds 0,25 € from the studio for it; the player sees the real impact and never pays. 0,25 € every 20 levels for the charity picked before playing, paid by the studio. Build spec: https://www.charitips.com/docs/demos/progress/game-milestones.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 campaign

Once, create a charities selection, a campaign with its `charitiesSelectionId`, then activate it, as in [steps 3 to 5 of Your first donation](https://www.charitips.com/docs/get-started/first-donation.md#3-pick-your-charities).

```bash
curl -X POST https://api.sandbox.charitips.com/v1/campaigns \
  -H "Authorization: Bearer $CHARITIPS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Savings tiers",
    "charitiesSelectionId": "<charitiesSelectionId>"
  }'
```

### Count the progress in your app

Steps walked, modules passed, levels won, euros saved: your app counts them and shows the gauge, the streak or the tiers. Nothing goes to Charitips while the person progresses.

### Give at the first tier

When the person reaches the first tier, create a donation without `charityId`, with the tier in `uniqueExternalId`. Then offer the charities.

```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,
    "uniqueExternalId": "savings_88213_tier_1",
    "externalId": "customer_88213"
  }'
```

### Let the person pick a charity

When the person picks, [claim the donation](https://www.charitips.com/docs/api-reference/claim-donation.md) for that charity and save the `charityId` on your side.

```bash
curl -X POST https://api.sandbox.charitips.com/v1/donations/<donationId>/claim \
  -H "Authorization: Bearer $CHARITIPS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "charityId": "<charityId>"
  }'
```

### Give at the next tiers

Send each next tier's donation with the saved `charityId`. It is assigned at once, with no claim and no choice screen.

```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": "savings_88213_tier_2",
    "externalId": "customer_88213"
  }'
```

### Add up micro amounts per period

When a step is worth a few cents (0,10 € per day at 10 000 steps, 0,05 € per level), add them up in your app. Create one donation per week or month, with the period in `uniqueExternalId`. The person still sees each step count, and your bill and your webhooks get one line per period.

### Pay at the end

A course can give a growing amount per module and a bonus at the end. Keep the running total on your side and create one donation when the course is done, then let the person pick its charity. [`update-donation`](https://www.charitips.com/docs/api-reference/update-donation.md) changes an amount only before the claim and before billing, so the total stays in your app.

## Edge cases

- **The person never chooses.** A waiting donation is assigned automatically when it expires or when the campaign closes: none is lost.
- **Health and personal data.** Steps, visits and goals stay in your product: never put them in `externalId`, `uniqueExternalId` or the donor fields.
- **Fiscal receipts.** You fund the donations, so the receipt goes to your company.

## Related pages

- [Campaigns](https://www.charitips.com/docs/concepts/campaigns.md)
- [Donation lifecycle](https://www.charitips.com/docs/concepts/donation-lifecycle.md)
- [Webhooks](https://www.charitips.com/docs/webhooks/configuration.md)
