Give Plugin
The Genius Checkout for Give plugin accepts donations on Give forms through Genius Checkout. It uses only the public /api/v1/* endpoints — there is no Give-specific surface on the GC backend.
Install
- Download the plugin zip from your merchant dashboard.
- WordPress admin → Plugins → Add New → Upload Plugin → upload, activate.
- Give itself must be installed and active first — the plugin shows a yellow admin notice and stays inert if it isn't.
Configure
Give admin → Donations → Settings → Payment Gateways → Genius Checkout:
| Setting | Value |
|---|---|
| API Key | gc_test_… or gc_live_… from your GC dashboard |
| Webhook Secret | Same value you set on GC Dashboard → Developers → Webhooks |
| API Base URL | Leave default (https://app.geniuscheckout.com); override only for staging |
Then in the GC dashboard, set the webhook endpoint URL to:
https://your-wp-site.example.com/gc-give-webhookSubscribe the endpoint to at least: payment.completed, payment.failed, payment.refunded, payment.voided.
Donation flow
- Donor fills a Give form and selects Credit / Debit Card (the GC method).
- On submit, the plugin creates a checkout session via
POST /api/v1/checkout-sessionsand 302-redirects the donor to the GC hosted checkout. - Donor completes payment (3DS handled by GC). They return to the Give success page.
- GC POSTs
payment.completedto/gc-give-webhook. The handler marks the donation Complete and records the gateway transaction id on the donation.
Supported features
| Capability | Status |
|---|---|
| Refunds (full + partial) | Yes |
| Tokenization | Yes — every successful donation auto-creates a token |
| Recurring donations (subscriptions) | Yes — verified live across multiple renewal cycles |
| Localized buyer decline messages | Yes — en/es/fr/pt-BR |
Refunds
Give admin → donation detail → Refund. The plugin calls POST /api/v1/payments/{transaction_id}/refund with the donation amount. Refund posts back via payment.refunded webhook and updates the donation status.
Webhook security
Every inbound webhook is signed by GC with HMAC-SHA256 over {timestamp}.{body} (hex) in the X-GC-Signature header, with a 5-minute replay window enforced against X-GC-Timestamp. See Webhooks → Signature Verification.
Troubleshooting
- Donation stuck in Pending — confirm the webhook URL is reachable and the secret matches between WP and the GC dashboard.
- Refund button missing — only appears for donations with a recorded gateway transaction id (set on
payment.completedwebhook arrival). - Recurring renewals not firing — check that the donor's payment token is
activein your GC dashboard. Cancelled tokens won't renew.
Architectural rule
The Give plugin uses only POST /api/v1/checkout-sessions, POST /api/v1/payments/{id}/refund, and the standard payment-event webhooks. There are no Give-specific routes on the platform. Any future donation platform that integrates with us follows the same pattern.
