Use cases · Engagement
A reward validated later
The donation is created when the person submits; your team validates it, with its final amount, once the fact is checked.
- Who paysYour company
- Starts withA customer action
- Tax receiptIn your company's name
Needs API access on a validated account. Plans
security.your-saas.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 report is sent
To comeYour customer does…
Clicks “Send the report”.
Your server sends…
Creates a 500 € donation for report #412 on the campaign “Your security portal”.
POSTcreate-donation
Charitips answers…
Charitips records the donation and returns its id: it waits for your customer to pick a charity.
Charitips will then tell your server the donation was created.
2When the charity is chosen
To comeYour customer does…
Clicks “Choose the charity”.
Your server sends…
Assigns that donation to the charity your customer picks.
POSTclaim-donation
Charitips answers…
The donation now goes to the charity your customer picks.
Charitips will then tell your server the donation was updated.
3When the vulnerability is reviewed
To comeYour customer does…
Clicks “Validate: 500 €”.
Your server sends…
Calls validate donation.
Charitips answers…
Charitips answers the call.
Charitips will then tell your server the donation was updated.
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_updateBefore you start
- A campaign created with
withDonationsValidation.
Create a campaign with validation
Once, create the campaign with
withDonationsValidation, after its charities selection, then activate it. WithdonationsBilledOnset toCLAIM, a donation is billed when you validate it, at its final amount.POST /v1/campaignscurl -X POST https://api.sandbox.charitips.com/v1/campaigns \ -H "Authorization: Bearer $CHARITIPS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "name": "Bug bounty", "charitiesSelectionId": "<charitiesSelectionId>", "withDonationsValidation": true, "donationsBilledOn": "CLAIM" }'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 when the person submits
A bug report, a hiring referral or bottles sent back by post: when the person submits, create the donation with the amount you expect.
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": 500, "uniqueExternalId": "bug_report_4410", "externalId": "researcher_207" }'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 a charity
The person picks the charity when they submit. Claim the donation with their choice.
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.
Validate once the fact is checked
Once your team has checked the fact, validate the donation. Validation needs a claimed donation: the API answers
400 Donation not claimed yetotherwise, and409 Donation already validatedthe second time.POST /v1/donations/<donationId>/validatecurl -X POST https://api.sandbox.charitips.com/v1/donations/<donationId>/validate \ -H "Authorization: Bearer $CHARITIPS_TOKEN" \ -H "Content-Type: application/json" \ -d '{}'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.
Set the amount at validation
When the amount depends on the review, a severity or a count of items received, send the final amount with the validation. Without
amount, the donation keeps the amount it was created with.POST /v1/donations/<donationId>/validatecurl -X POST https://api.sandbox.charitips.com/v1/donations/<donationId>/validate \ -H "Authorization: Bearer $CHARITIPS_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "amount": 50000 }'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.
Edge cases
- The fact is not confirmed. Delete the donation instead of validating it.
- The review takes more than a week. In production, a donation not validated and not billed 7 days after its creation is deleted automatically.
- Personal data. Health goals, appointments and hires stay in your product: never put them in
externalId,uniqueExternalIdor the donor fields. - 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




