Get started
Go-live checklist
Everything to check before your integration handles real donations, and what changes between the sandbox and live: hosts, credentials, payments and webhooks.
Your integration works on the sandbox. Go through this list before the first real donation. Nothing you created on the sandbox exists on live: selections, campaigns and webhooks are created again there.
Each item says who can check it: your coding agent with read-only calls to the live API, your coding agent reading your code, or a person. Tick what is done; the prompt at the end of the page hands the rest to your agent.
Your account
GET /v1/accounts/{accountId}answersstatus: VALIDATED.GET /v1/accountslists the accounts your credentials can read, so you do not need the id in advance.Callsget-accountlist-accountsIn the dashboard billing settings.
GET /v1/accounts/{accountId}?includeBillingInfo=trueshows the plan inbillingInfo.planand the next billing date inbillingInfo.nextBillingAt, not whether the subscription is active.Callsget-accountGET /v1/accounts/{accountId}/payment-methodson the paying account lists at least one method withstatus: ENABLED.Callsget-payment-methodsGET /v1/accounts/{accountId}/entitlementsanswerstruefor each feature your flow uses, against the flow-by-flow list of Plans and prerequisites:apiAccessfor webhooks,b2cwhen your users pay,accountHierarchyfor child accounts.Callsget-entitlements
Credentials and hosts
The values of
CHARITIPS_CLIENT_IDandCHARITIPS_CLIENT_SECRETin the live environment start withlive_, checked without printing them; nolive_ortest_value appears in the repository, a web bundle or a mobile app.The live configuration names
api.charitips.comandembed.charitips.comand nosandbox.host.POST /v1/authenticationonhttps://api.charitips.comwith the live pair answers200with anaccessToken.Callscreate-tokenThe code caches the token and calls
POST /v1/authenticationonce an hour, or once after a401, never before each call.
Campaigns
GET /v1/charities-selections?includeCharities=truereturns each selection id of the live configuration with at least one charity;GET /v1/campaignsreturns each campaign id of the live configuration withstatus: ACTIVE.Callslist-charities-selectionslist-campaignsA campaign with
amountType: FIXED_AMOUNTreadsstatus: ACTIVEonce its invoice is paid; one stillPENDINGafter activation is waiting for payment.Callsget-campaignfiscalReceiptTypeon each live campaign is the one you want. When your users pay,GET /v1/charities-selections?includeCharities=trueshowsfiscalReceiptsSupport: ENABLEDon each charity they can pick.Callsget-campaignlist-charities-selections
Calls
Every
POST /v1/donations,/v1/votes,/v1/donorsand/v1/recurring-donationsbody carriesuniqueExternalId, set to your own id for the event, and a409is handled as a success.No call to
api.charitips.comand no credential in browser or mobile code; the create call runs after the event is confirmed.The error handling branches on the HTTP status as described; only a
401with a new token, a429afterRetry-Afterand a500are retried, once.
Webhooks
GET /v1/webhookson live returns a webhook whosetargetis your live endpoint, with every event your code handles inevents.Callslist-webhooksThe handler verifies
X-Charitips-Signatureon the raw body with the live signing key, as in Webhooks configuration, and refuses a bad signature with a status Charitips does not retry.The handler keys its effects on the resource id and its status, so a second delivery changes nothing.
The handler stores the event, then answers
2xx; it answers5xxonly when the event could not be stored.
Business customers, if you have them
GET /v1/accounts/{accountId}/child-accountsreturns each customer withstatus: VALIDATED;GET /v1/accounts/{childAccountId}?includeFiscalInfo=trueon each one returns afiscalInfowithlegalRegistrationNumber,street,zip,cityandcountry.Callslist-child-accountsget-accountA decision for your team, taken when each child account is created.
billingInfo.billedToon a child account readsACCOUNTwhen the customer is invoiced directly,PARENT_ACCOUNTwhen you are.Callslist-child-accounts
Let your agent check this
0 of 19 ticked
19 items left to check
Read https://www.charitips.com/docs/get-started/go-live.md and check my integration against its go-live checklist. Use the live credentials from the environment variables CHARITIPS_CLIENT_ID and CHARITIPS_CLIENT_SECRET against https://api.charitips.com: create one token with POST /v1/authentication, then run only the GET calls the agent checks name. Never create, update or delete anything else, and never print a credential or a token. For the code reviews, read my code. For the manual items, tell me what to confirm and where. Report item by item, with its id: passed, failed with the reason, or manual.The docs MCP server cannot run these calls: it is read-only and has no API key. The agent uses your credentials from its environment.
Sandbox or live
What changes between the two environments:
- API host:
api.sandbox.charitips.comon the sandbox,api.charitips.comon live. - Widgets:
embed.sandbox.charitips.comon the sandbox,embed.charitips.comon live. - Credentials: start with
test_on the sandbox, withlive_on live. Each pair only works on its own environment. - Payments: a test card and a test SEPA account on the sandbox, given on the Sandbox page; real money on live.
- Payment method checks: donations skip them on the sandbox; on live, the paying account needs a payment method.
- Card and SEPA amount limits: never applied on the sandbox; a fixed budget above the limit is refused on live.
- Subscription: needed on both to activate a campaign.
- Data: separate. An id from the sandbox does not exist on live, and answers
404or400.