Skip to content
Aller au contenu
Charitips

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} answers status: VALIDATED. GET /v1/accounts lists the accounts your credentials can read, so you do not need the id in advance.Callsget-accountlist-accounts

  • In the dashboard billing settings. GET /v1/accounts/{accountId}?includeBillingInfo=true shows the plan in billingInfo.plan and the next billing date in billingInfo.nextBillingAt, not whether the subscription is active.Callsget-account

  • GET /v1/accounts/{accountId}/payment-methods on the paying account lists at least one method with status: ENABLED.Callsget-payment-methods

  • GET /v1/accounts/{accountId}/entitlements answers true for each feature your flow uses, against the flow-by-flow list of Plans and prerequisites: apiAccess for webhooks, b2c when your users pay, accountHierarchy for child accounts.Callsget-entitlements

Credentials and hosts

  • The values of CHARITIPS_CLIENT_ID and CHARITIPS_CLIENT_SECRET in the live environment start with live_, checked without printing them; no live_ or test_ value appears in the repository, a web bundle or a mobile app.

  • The live configuration names api.charitips.com and embed.charitips.com and no sandbox. host. POST /v1/authentication on https://api.charitips.com with the live pair answers 200 with an accessToken.Callscreate-token

  • The code caches the token and calls POST /v1/authentication once an hour, or once after a 401, never before each call.

Campaigns

  • GET /v1/charities-selections?includeCharities=true returns each selection id of the live configuration with at least one charity; GET /v1/campaigns returns each campaign id of the live configuration with status: ACTIVE.Callslist-charities-selectionslist-campaigns

  • A campaign with amountType: FIXED_AMOUNT reads status: ACTIVE once its invoice is paid; one still PENDING after activation is waiting for payment.Callsget-campaign

  • fiscalReceiptType on each live campaign is the one you want. When your users pay, GET /v1/charities-selections?includeCharities=true shows fiscalReceiptsSupport: ENABLED on each charity they can pick.Callsget-campaignlist-charities-selections

Calls

  • Every POST /v1/donations, /v1/votes, /v1/donors and /v1/recurring-donations body carries uniqueExternalId, set to your own id for the event, and a 409 is handled as a success.

  • No call to api.charitips.com and 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 401 with a new token, a 429 after Retry-After and a 500 are retried, once.

Webhooks

  • GET /v1/webhooks on live returns a webhook whose target is your live endpoint, with every event your code handles in events.Callslist-webhooks

  • The handler verifies X-Charitips-Signature on 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 answers 5xx only when the event could not be stored.

Business customers, if you have them

  • GET /v1/accounts/{accountId}/child-accounts returns each customer with status: VALIDATED; GET /v1/accounts/{childAccountId}?includeFiscalInfo=true on each one returns a fiscalInfo with legalRegistrationNumber, street, zip, city and country.Callslist-child-accountsget-account

  • A decision for your team, taken when each child account is created. billingInfo.billedTo on a child account reads ACCOUNT when the customer is invoiced directly, PARENT_ACCOUNT when you are.Callslist-child-accounts

Let your agent check this

0 of 19 ticked

19 items left to check

Paste in your agent
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.com on the sandbox, api.charitips.com on live.
  • Widgets: embed.sandbox.charitips.com on the sandbox, embed.charitips.com on live.
  • Credentials: start with test_ on the sandbox, with live_ 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 404 or 400.