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
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.
1When the charity is tapped
To comeYour 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.
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.
Build it
The calls behind the demo, in order. Each step shows the request your server sends.
donation_createdonation_updateSet 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/campaignscurl -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 codeRequest 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.
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/donationscurl -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 codeRequest 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.
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>/claimcurl -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 codeRequest 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.
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: trueandleadCollectionOptionsset to{"fullname": true, "companyName": true, "email": true, "phone": true, "custom": false}, wherecustomis a question orfalse. SendleadCollectionOptionsas one object, as shown here. Then send the contact with the claim,hasAcceptedTermsincluded.POST /v1/donations/<donationId>/claimcurl -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 codeRequest 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.
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
uniqueExternalIdand 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,phoneandcustom, and the claim is refused with400 Lead is requiredwhenleadis 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




