---
title: "Round-up on every payment"
description: "Round each card payment up and give the difference: your customer pays the round-up and gets the fiscal receipt in their name."
canonical: https://www.charitips.com/docs/use-cases/round-up
---

# Round-up on every payment

> Round each card payment up and give the difference: your customer pays the round-up and gets the fiscal receipt in their name.

- **Who pays**: Your users
- **Starts with**: A purchase
- **Tax receipt**: In the user's name
- Needs [API access](https://www.charitips.com/docs/overview/plans.md#api-access-for-webhooks-and-credentials), [The B2C use case](https://www.charitips.com/docs/overview/plans.md#the-b2c-use-case-when-your-users-pay) 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/round-up.md

**This demo is one example**: Card payments rounded to the next euro, with a multiplier and a monthly cap. The same flow also covers:

- [Round to the next 5 €](https://www.charitips.com/docs/use-cases/round-up.md#create-a-donation-per-transaction): The difference to the next 5 € is given instead of the difference to the next euro.
- [Round-up at e-commerce checkout](https://www.charitips.com/docs/use-cases/round-up/online-checkout.md): The customer rounds up the basket at checkout and you give the difference.
- [Your company pays the round-up](https://www.charitips.com/docs/use-cases/round-up.md#billing-and-receipts): You fund the round-ups instead, without `hasBeenCharged`: the fiscal receipt goes to your company.
- [One donation a month](https://www.charitips.com/docs/use-cases/card-cashback.md): Round-ups are added up and given once a month, to the charity the customer picked.
- [Your company matches the round-ups](https://www.charitips.com/docs/use-cases/donation-matching.md#set-the-matching-rate): Each round-up the customer pays is matched by your company, at a rate and within a budget set once on the campaign.

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

- [Bank card payments](https://www.charitips.com/docs/use-cases/round-up/bank-card.md) (Banking and insurance): A bank rounds each card payment up to the next euro and gives the difference. The customer opts in, sets a multiplier and a monthly cap, pays the round-ups and gets the receipt. Each card payment rounded up to the next euro. Build spec: https://www.charitips.com/docs/demos/round-up.md
- [Festival cashless wallet](https://www.charitips.com/docs/use-cases/round-up/festival-wallet.md) (Culture and events): A festival's cashless wristband rounds each drink or food payment up to the next euro. The attendee agrees once at top-up, pays the cents and gets the receipt in their name. Each wristband payment rounded up to the next euro. Build spec: https://www.charitips.com/docs/demos/round-up/festival-wallet.md
- [Mobility wallet](https://www.charitips.com/docs/use-cases/round-up/transit-wallet.md) (Travel and mobility): A mobility app rounds each journey up to the next euro and gives the cents to the charity the rider saved. The rider pays the round-ups; a refunded trip deletes its round-up. Each journey rounded up to the next euro. Build spec: https://www.charitips.com/docs/demos/round-up/transit-wallet.md
- [Online store checkout](https://www.charitips.com/docs/use-cases/round-up/online-checkout.md) (Retail): An online store offers to round the order total up to the next euro at checkout. The customer ticks the round-up, picks the charity, pays the difference with the order and gets the receipt in their name. The order total rounded up to the next euro. Build spec: https://www.charitips.com/docs/demos/round-up/online-checkout.md
- [Restaurant self-order kiosk](https://www.charitips.com/docs/use-cases/round-up/self-order-kiosk.md) (Hotels and restaurants): A restaurant's self-order kiosk offers to round the bill up to the next euro before payment. The customer picks the charity and pays the difference with the meal. The bill rounded up to the next euro at the kiosk. Build spec: https://www.charitips.com/docs/demos/round-up/self-order-kiosk.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), [`delete-donation`](https://www.charitips.com/docs/api-reference/delete-donation.md)
- **Webhooks**: `donation_create`
- **Before you start**: The B2C use case: each round-up is created with `hasBeenCharged: true`, once the customer is charged.
- **Before you start**: The customer's name and postal address in `donor`, for the receipt in their name.

### Create the round-up campaign

Once, create a charities selection, create the campaign with its `charitiesSelectionId` on your `accountId`, 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 '{
    "accountId": "<accountId>",
    "charitiesSelectionId": "<charitiesSelectionId>",
    "name": "Round up"
  }'
```

### Create a donation per transaction

For each eligible transaction in your product, create a donation for the round-up with [Create a donation](https://www.charitips.com/docs/api-reference/create-donation.md). `amount` is in cents: 23 is 0,23 €. `hasBeenCharged: true` says your user paid the round-up, and `donor` puts the fiscal receipt in their name. `uniqueExternalId` is your transaction id: a retried call answers `409` instead of creating a second donation.

```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": 23,
    "uniqueExternalId": "<transactionId>",
    "hasBeenCharged": true,
    "withFiscalReceipt": true,
    "donor": {
      "firstName": "Camille",
      "lastName": "Martin",
      "email": "camille.martin@example.com",
      "street": "12 rue des Lilas",
      "zip": "75011",
      "city": "Paris",
      "country": "FR"
    }
  }'
```

### Debit your user

Once the donation is created, move the rounded-up amount on your side and decrement your user's balance accordingly.

### Billing and receipts

Charitips bills you once a month for the total of all round-up donations, so a single money transfer a month goes from you to Charitips. Round-ups are numerous, so Charitips issues the fiscal receipt to the donor once a year rather than one per round-up.

## Edge cases

- **Prerequisites.** `hasBeenCharged` and `withFiscalReceipt` need the B2C use case on your account: see [Plans and prerequisites](https://www.charitips.com/docs/overview/plans.md).
- **A refunded payment.** Delete its round-up with [Delete a donation](https://www.charitips.com/docs/api-reference/delete-donation.md) before the monthly invoice: once invoiced, it answers `403 Donation already invoiced`.

## Related pages

- [Campaigns](https://www.charitips.com/docs/concepts/campaigns.md)
- [Billing and fiscal receipts](https://www.charitips.com/docs/concepts/billing-and-receipts.md)
- [Your users give their own money](https://www.charitips.com/docs/use-cases/b2c.md)
