Skip to content
Aller au contenu
Charitips

Use cases · Events and stores

On site, at a kiosk or with a QR code

At a stand, a return point or on a product, a shared screen or a scanned page lets the person pick the charity on the spot.

  • Who paysYour company
  • Starts withA customer action
  • Tax receiptIn your company's name

Needs API access on a validated account. Plans

Device
Charities shown as
Outline widget
deposit.your-festival.example

deposit.your-festival.example

Step by step

Click through the site. Each step shows what your customer does, what your server sends and what Charitips answers.

  1. 1When the charity is tapped

    To come

    Your customer does…

    Clicks “Choose the charity”.

    Your server sends…

    Creates a 0,50 € donation for cup return day2 01248 on the campaign “Cups returned”, for the charity your customer picks.

    POSTcreate-donation

    Charitips answers…

    Charitips records the donation and returns its id: it goes to the charity your customer picks at once.

    Charitips will then tell your server the donation was created.

How to read this demo: the site shows what your customer does, and the panel what your server sends and what Charitips answers, step by step.

Build spec

The site is made up and nothing is sent. The endpoints, fields and webhook events are the real ones, and so are the charities.

Scenarios this flow covers The same calls cover each of these.

One flow, 6 variants

Each card is this flow in another sector or use case. Pick one: the demo above plays it, with its site, its amounts and its charities. The API calls stay the same.

Culture and eventsCup returned at a festivalAt a festival return point, each cup put on the tray gives 0,50 €, paid by the festival. The attendee taps the charity on the shared screen; the receipt goes to the festival.0,50 € per cup returnedOpen its page
Culture and eventsGame at an event standA brand's event stand runs a game: a winning slot gives 1 € to 10 €. The visitor picks the charity on the stand's screen, or scans a code to choose later; the brand pays.1 € to 10 € per winOpen its page
Culture and eventsContact left at a standAt a trade show, an exhibitor gives 0,50 € for each visitor who leaves their details. One tap on the stand's tablet sends the contact and the charity choice; the exhibitor pays.0,50 € per contactOpen its page
RetailQR code on a productA QR code under a product's cap gives 2 % of the price once scanned after purchase. The buyer picks the charity on the scanned page; one donation per code, paid by the brand.2 % of the price, scanned after purchaseOpen its page
RetailPackaging returned in storeA shop gives 0,10 € for each packaging item dropped at its collection point. The customer picks the charity once; the shop sends the month's total as one donation.0,10 € per item returned, settled monthlyOpen its page
Culture and eventsCashless wristband top-upsA festival gives 0,50 € for each cashless wristband top-up. The attendee picks the charity once at the top-up station; after the last day, the festival sends the total.0,50 € per top-up, sent after the festivalOpen its page

Build it

The calls behind the demo, in order. Each step shows the request your server sends.

  1. 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.

    POST /v1/campaigns
    curl -X POST https://api.sandbox.charitips.com/v1/campaigns \  -H "Authorization: Bearer $CHARITIPS_TOKEN" \  -H "Content-Type: application/json" \  -d '{    "name": "Cup returns",    "charitiesSelectionId": "<charitiesSelectionId>"  }'
    Built from the spec and the API code

    Request bodies are written for this docs and checked against the API's validation; ids in angle brackets are placeholders. Response values are placeholders built from the schema.

  2. Give from your server

    When the person acts (a cup handed back, a game won, a code scanned), your kiosk or your page asks your server to create the donation. Your server holds the API key: the kiosk and the scanned page only talk to it. For a QR code on a product, use the product's serial number as uniqueExternalId, so a code scanned twice gives once.

    POST /v1/donations
    curl -X POST https://api.sandbox.charitips.com/v1/donations \  -H "Authorization: Bearer $CHARITIPS_TOKEN" \  -H "Content-Type: application/json" \  -d '{    "campaignId": "<campaignId>",    "amount": 50,    "uniqueExternalId": "cup_return_2026_07_12_0412"  }'
    Built from the spec and the API code

    Request bodies are written for this docs and checked against the API's validation; ids in angle brackets are placeholders. Response values are placeholders built from the schema.

  3. Let the person pick on screen

    The screen shows the charities, and the tap claims the donation. Nobody signs in. Then the kiosk goes back to its first screen for the next person.

    POST /v1/donations/<donationId>/claim
    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>"  }'
    Built from the spec and the API code

    Request bodies are written for this docs and checked against the API's validation; ids in angle brackets are placeholders. Response values are placeholders built from the schema.

  4. Collect a contact with the choice

    At a trade show stand, the claim can also record the person's contact. Create the campaign with withLeadCollection: true and leadCollectionOptions set to {"fullname": true, "companyName": true, "email": true, "phone": true, "custom": false}, where custom is a question or false. Send leadCollectionOptions as one object, as shown here. Then send the contact with the claim, hasAcceptedTerms included.

    POST /v1/donations/<donationId>/claim
    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>",    "lead": {      "fullname": "Camille Martin",      "companyName": "Martin Consulting",      "email": "camille.martin@example.com",      "phone": "+33 6 12 34 56 78",      "hasAcceptedTerms": true    }  }'
    Built from the spec and the API code

    Request bodies are written for this docs and checked against the API's validation; ids in angle brackets are placeholders. Response values are placeholders built from the schema.

  5. Group small amounts per day

    Returns at a bin or sales at a till can be many small amounts. Count them on your side and create one donation per day or per month, with the date in uniqueExternalId and the charity your customer saved, or yours.

Edge cases

  • Nobody chooses. The donation is assigned automatically when it expires or when the campaign closes: none is lost.
  • A code scanned twice. The second scan reads the donation already made. The serial is the only guard: check the purchase on your side if it matters.
  • A claim without the contact. On a lead collection campaign, the lead fields are fullname, companyName, email, phone and custom, and the claim is refused with 400 Lead is required when lead is missing.
  • Fiscal receipts. You fund the donations, so the receipt goes to your company.

The memo

Send the memo to your team

Already written for this flow

  • What it does and who pays, in a few sentences
  • What you need: plan, API calls and webhooks
  • What you can report: donations, charities, impact and receipts

To paste in an email, a document or a note.

Email it