gocardless-webhooks

A guide for connecting an application to GoCardless, a service for bank-debit and recurring payments, through webhook notifications. It explains signature checks and batches of payment events.

In plain words
What is it for?
Use it for confirmed or failed payments, cancelled payment mandates, and paid payouts.
Why use it?
It helps ensure payment notifications are genuine and prevents duplicate or incomplete processing of large event batches.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/hookdeck/webhook-skills/gocardless-webhooks
Any agent
npx skills add hookdeck/webhook-skills --skill gocardless-webhooks
Clone the repo
git clone --depth 1 https://github.com/hookdeck/webhook-skills

Made for: Claude Code, Codex.

Per session 52 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,028 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 83% copy Near-identical to another mod in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00052 $0.02028
Opus 5 $0.00026 $0.01014
Sonnet 5 $0.00010 $0.00406
Haiku 4.5 $0.00005 $0.00203

Measured 3d ago against content hash 25fc857e6f17, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

gocardless-webhooks scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

The scan reads SKILL.md. This mod also ships 8 executable files (examples/express/src/index.js, examples/express/test/webhook.test.js, examples/fastapi/main.py, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

Origin

This is a copy

83% identical to adyen-webhooks — 202 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.

skills/gocardless-webhooks/SKILL.md · 157 lines

How it starts

The opening of the file, as written. The whole thing — 157 lines — stays where its author put it; the contents beside it link to each section on GitHub.

GoCardless Webhooks

GoCardless is a bank debit / recurring payments platform. It sends webhooks as batches of events (up to 250 per request) in an events array, signed with an HMAC-SHA256 signature in the Webhook-Signature header.

When to Use This Skill

  • How do I receive GoCardless webhooks?
  • How do I verify the GoCardless Webhook-Signature header?
  • Why is my GoCardless webhook signature verification failing?
  • How do I handle payments confirmed/failed, mandates cancelled, or payouts paid events?
  • How do I process the GoCardless events array idempotently?

How GoCardless Signs Webhooks

  • Header: Webhook-Signature — a bare 64-char lowercase hex digest (no X- prefix, no sha256= scheme prefix)
  • Algorithm: HMAC-SHA256 over the raw request body, keyed with the webhook endpoint secret (from your GoCardless Dashboard)
  • Key: use the secret verbatim as a UTF-8 string — do NOT base64-decode it even though it looks base64url-ish; decoding it produces a wrong signature
  • Encoding: lowercase hex string
  • Comparison: timing-safe equality
  • Response: return 204 No Content once the whole batch is accepted; a non-2xx (e.g. 498) marks the delivery failed. GoCardless does not auto-retry — redelivery is manual (POST /webhooks/{id}/actions/retry). Delivery is at-least-once, so keep handlers idempotent on event.id.

(Scheme verified 2026-08 against a live sandbox delivery and the official gocardless-nodejs SDK; GoCardless's prose still doesn't name the algorithm.)

Always verify against the raw body — parsing JSON first and re-serializing will change the bytes and break the signature.

Verification (core)

Use the official gocardless-nodejs SDK where it runs (Node.js). parse() verifies the signature (timing-safe) and returns the events array, throwing InvalidSignatureError when the signature does not match.

// Node.js — official SDK (gocardless-nodejs), req.body is the RAW Buffer
const { parse, InvalidSignatureError } = require('gocardless-nodejs/webhooks');

try {
  const events = parse(
    req.body,                                  // raw body (Buffer/string), NOT parsed JSON
    process.env.GOCARDLESS_WEBHOOK_SECRET,     // webhook endpoint secret
    req.headers['webhook-signature']           // Webhook-Signature header
  );
  // signature valid — process each event, then respond 204
} catch (err) {
  if (err instanceof InvalidSignatureError) {
    // signature mismatch — respond 498 (do not process)
  }
}

Read the full file on GitHub · 157 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 157 lines · 52 tokens per session scan A 25fc857e6f17

Subscribe to this mod's changes

gocardless-webhooks is a skill published in the GitHub repository hookdeck/webhook-skills (84 stars, last pushed 6d ago), licensed MIT. It adds 52 tokens to every session and 2,028 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. It is 83% identical to adyen-webhooks, differing in 202 lines, and is treated as a copy.

Related

Other skills, from other repositories

startup-ceo

CEO coordinator that dispatches research, strategy, finance, and writer specialists via A2A and synthesizes their findings into a GO/NO-GO investment briefing. Use for multi-agent advisory workflows.

Atmosphere/atmosphere · 44 tokens

finance-agent

Financial analyst for startup economics — TAM/SAM/SOM, revenue projections, burn rate, runway, and break-even. Use when building financial models or evaluating investment cases.

Atmosphere/atmosphere · 37 tokens

billing-agent

Billing specialist for invoices, payments, refunds, and plan changes. Use when customers ask about charges, billing inquiries, or subscription management; typically reached via handoff from the support agent.

Atmosphere/atmosphere · 40 tokens

memstack-business-invoice-generator

Use this skill when the user says 'invoice', 'generate invoice', 'create invoice', 'bill client', 'line items', 'payment terms', or needs professional invoices with tax calculations and payment instructions. Do NOT use for contracts or financial projections.

cwinvestments/memstack · 57 tokens

memstack-business-financial-model

Use this skill when the user says 'financial model', 'projections', 'revenue forecast', 'unit economics', 'break-even', 'cash flow', or mentions MRR, churn, CAC, LTV, or runway. Builds monthly projections with scenario modeling. Do NOT use for pricing strategy or invoice generation.

cwinvestments/memstack · 71 tokens

memstack-business-freelancer-toolkit

Use when the user says 'track my time', 'freelancer invoice', 'billable hours', 'time tracking', 'freelance finances', 'client billing', 'project hours', or needs invoicing, time tracking, or analytics patterns for freelance work. Do NOT use for general invoice templates or proposal writing.

cwinvestments/memstack · 75 tokens