GGiveLinkDocs
GGiveLinkDocs
DashboardFeature RequestsIntroductionQuickstartPricing

Agents

Director suite referenceConfigure fundraising playsManage major-gift prospectsUse the board thank-you packet

Guides

Donation FormsCampaignsDonor ManagementRecurring GivingEmail & CommunicationsEvents & TicketingPeer-to-Peer FundraisingHow fees workDonor fee coverageCover-fees settings for nonprofitsOrg Intelligence

Contacts

Advanced filter logic
Custom fields — filter and sort contactsFilter contacts by a custom field

Tasks

Manage tasks

Integrations

Integrations OverviewStripeWebhooksZapier

Donation Widget

Wallet setupInstall the widget and activate wallets

API Reference

API OverviewAuthentication
Create Stripe Connect AccountRefresh Onboarding LinkStripe webhooks
API ReferenceStripe Connect

Stripe webhooks

How GiveLink receives and processes events from Stripe.

GiveLink receives Stripe events to update donation records, manage recurring giving, and trigger downstream work such as receipts and dispute alerts.

This is an inbound service endpoint operated by GiveLink. It does not provide public outbound webhook subscriptions for your application.

Endpoint

POST /api/webhooks/stripe

Stripe sends events to this endpoint. Nonprofit admins connect their account through the Stripe Connect workflow.

Signature verification

GiveLink reads the raw request body and verifies the Stripe-Signature header with the configured STRIPE_WEBHOOK_SECRET before processing the event. Missing or invalid signatures receive 400 Bad Request.

Processing and acknowledgment

For invoice.created, GiveLink runs renewal fee handling before handing the event to Inngest, the service that runs its background workflows. This allows eligible invoice fee updates to happen before acknowledgment.

GiveLink then sends the verified event to Inngest and waits for that handoff to succeed before returning 200 OK with { "received": true }. A failed handoff is not acknowledged as successful.

The response confirms the handoff. Background work, such as recording a donation and sending its receipt, can still be in progress.

Duplicate events

GiveLink uses the original Stripe event ID as the Inngest event ID to support duplicate-event detection. It does not keep the processed-event record in an in-memory set on the web server.

Background handlers have their own retry and record-update logic. An acknowledgment does not promise that every downstream action has completed or that an event can never be retried.

How is this guide?
Edit this page→Request a feature→Changelog→

Last updated on 9/9/2026

Refresh Onboarding Link

Generate a fresh Stripe onboarding link for an organization.

On this page

EndpointSignature verificationProcessing and acknowledgmentDuplicate events

Ask GiveLink

AI-powered docs assistant

Ask me anything about GiveLink — campaigns, donations, integrations, pricing, or API usage.

AI responses may not be accurate. Check the docs for details.