---
title: "A saved choice, a periodic statement"
description: "Your customer picks a charity once, in their settings. Each period, give a share and show it on their statement."
canonical: https://www.charitips.com/docs/use-cases/periodic-statement
---

# A saved choice, a periodic statement

> Your customer picks a charity once, in their settings. Each period, give a share and show it on their statement.

- **Who pays**: Your company
- **Starts with**: Every period
- **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/subscription.md

**Scenarios this flow covers:**

- [The company picks the charity](https://www.charitips.com/docs/use-cases/periodic-statement/premium-plan.md): Every donation carries the charity you chose, set when you create it.
- [A year-end settlement](https://www.charitips.com/docs/use-cases/periodic-statement/no-claim-bonus.md): One donation a year, its amount computed from the year, such as a claim-free bonus.
- [A metered amount](https://www.charitips.com/docs/use-cases/periodic-statement/kwh-saved.md): The amount follows a meter your app reads: kWh saved, minutes of activity.
- [Your customers pay the share](https://www.charitips.com/docs/use-cases/b2c.md): The share is added to their bill, and the fiscal receipt goes to them.

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

- [Share of a subscription](https://www.charitips.com/docs/use-cases/subscription-share.md) (Software and apps): A SaaS gives 1 % of every plan at each renewal. The workspace admin saves a charity in the billing settings; invoices paid before that choice wait, then get claimed for it. 1 % of each plan, every renewal. Build spec: https://www.charitips.com/docs/demos/subscription.md
- [Card cashback](https://www.charitips.com/docs/use-cases/card-cashback.md) (Banking and insurance): A bank turns 1 % of a customer's monthly card spending into one donation, at no cost to them. The customer picks the charity from the monthly notification; it is kept for later. 1 % of card spending, each month. Build spec: https://www.charitips.com/docs/demos/cashback.md
- [Energy saved](https://www.charitips.com/docs/use-cases/periodic-statement/kwh-saved.md) (Energy): An energy supplier compares each bill with the customer's baseline and gives 1 cent per kWh saved. The supplier pays; the customer picks the charity once and sees it on each bill. 0,01 € per kWh saved, on each bill. Build spec: https://www.charitips.com/docs/demos/statement/kwh-saved.md
- [No-claim year bonus](https://www.charitips.com/docs/use-cases/periodic-statement/no-claim-bonus.md) (Banking and insurance): An insurer gives 5 % of the premium after a year without an at-fault claim, instead of a discount. The policyholder picks the charity on their statement; the premium is unchanged. 10 € after a year with no claim. Build spec: https://www.charitips.com/docs/demos/statement/no-claim-bonus.md
- [Unused premium given back](https://www.charitips.com/docs/use-cases/periodic-statement/unused-premium.md) (Banking and insurance): An insurer works out, at year end, the premium not spent on claims and gives 5 % of it. The policyholder joins the programme and picks the charity today; the insurer pays. 5 % of the unused premium, at year end. Build spec: https://www.charitips.com/docs/demos/statement/unused-premium.md
- [Monthly share of a premium](https://www.charitips.com/docs/use-cases/periodic-statement/policy-renewal.md) (Banking and insurance): At renewal, a home insurer promises 1 € of each monthly premium to the charity the policyholder picks. Each payment creates the donation; the insurer pays, the premium stays put. 1 € a month, inside the premium. Build spec: https://www.charitips.com/docs/demos/statement/policy-renewal.md
- [Share of a card fee](https://www.charitips.com/docs/use-cases/periodic-statement/card-fee-share.md) (Banking and insurance): A bank's premium card gives 10 % of its yearly fee to a charity. The customer picks it when applying for the card; charging the fee creates the donation each year; the bank pays. 10 % of the yearly fee of a premium card. Build spec: https://www.charitips.com/docs/demos/statement/card-fee-share.md
- [Cashback on purchases](https://www.charitips.com/docs/use-cases/periodic-statement/purchase-cashback.md) (Banking and insurance): A mobile bank gives 1 % of each customer's card purchases every month, paid by the bank. The customer picks the charity once; the month closes with one donation on the statement. 1 % of each purchase, settled monthly. Build spec: https://www.charitips.com/docs/demos/statement/purchase-cashback.md
- [Premium plan revenue](https://www.charitips.com/docs/use-cases/periodic-statement/premium-plan.md) (Education): An online school gives 5 % of all Premium subscriptions each month to one charity it names for the year. Subscribers see in their account the total given since January. 5 % of the Premium plan revenue, each month. Build spec: https://www.charitips.com/docs/demos/statement/premium-plan.md
- [Active time converted](https://www.charitips.com/docs/use-cases/periodic-statement/active-time.md) (Software and apps): A community platform converts every 10 active minutes into 1 cent, settled monthly and paid by the platform. The member picks the charity once and watches the month add up. 0,01 € per active period, settled monthly. Build spec: https://www.charitips.com/docs/demos/statement/active-time.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), [`claim-donation`](https://www.charitips.com/docs/api-reference/claim-donation.md), [`create-donation`](https://www.charitips.com/docs/api-reference/create-donation.md), [`delete-donation`](https://www.charitips.com/docs/api-reference/delete-donation.md), [`list-donations`](https://www.charitips.com/docs/api-reference/list-donations.md)
- **Webhooks**: `donation_update`, `donation_create`

### Create the campaign

Once, create a charities selection, create the 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": "Monthly share",
    "charitiesSelectionId": "<charitiesSelectionId>"
  }'
```

### Save the customer's choice

In the customer's settings, let them pick a charity among the selection's. Your app saves the `charityId` on its side; each donation carries it later.

```bash
curl "https://api.sandbox.charitips.com/v1/charities-selections/<charitiesSelectionId>?includeCharities=true" \
  -H "Authorization: Bearer $CHARITIPS_TOKEN"
```

### Send one donation per period

At the end of each period, compute the amount on your side (a share of the plan, of the card fee or of the spending, or a meter such as kWh saved) and send one donation with the saved `charityId`: it is assigned at once. Build `uniqueExternalId` from the customer and the period, so a job that runs twice never gives twice. Small amounts per event (a cent per kWh, a few cents per transaction) add up on your side first: one donation per period keeps your bill and your webhooks short.

```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": 312,
    "uniqueExternalId": "kwh_customer_4471_2026_10",
    "externalId": "customer_4471",
    "charityId": "<charityId>"
  }'
```

### Claim it when the customer chooses

When a customer has not chosen yet, create the donation without `charityId`. It waits for their choice: claim it when they pick, or let it be assigned automatically when it expires or when the campaign closes. None is lost. The `donation_update` webhook tells your server when a waiting donation gets its charity.

```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>"
  }'
```

### Show it on the statement

List the customer's donations with [List donations](https://www.charitips.com/docs/api-reference/list-donations.md), filtered by their `externalId`, and show each period's line on the statement.

```bash
curl "https://api.sandbox.charitips.com/v1/donations?externalId=customer_4471" \
  -H "Authorization: Bearer $CHARITIPS_TOKEN"
```

## Edge cases

- **A year-end settlement.** A claim-free bonus or an unused premium is one donation a year, its amount computed when the year closes: the same call, with the year in `uniqueExternalId`.
- **The customer pays the share.** When the share is added to their bill, their own money pays it: see [Your users give their own money](https://www.charitips.com/docs/use-cases/b2c.md) for the receipt in their name.
- **Fiscal receipts.** You fund these donations, so the receipt goes to your company: one a year by default.

## Related pages

- [Campaigns](https://www.charitips.com/docs/concepts/campaigns.md)
- [Donation lifecycle](https://www.charitips.com/docs/concepts/donation-lifecycle.md)
- [A share of each subscription](https://www.charitips.com/docs/use-cases/subscription-share.md)
- [Card cashback](https://www.charitips.com/docs/use-cases/card-cashback.md)
- [Webhooks](https://www.charitips.com/docs/webhooks/configuration.md)
