ethoca-webhooks

A guide for receiving Ethoca Alerts, Mastercard's notifications about possible payment fraud and disputes, at your server.

In plain words
What is it for?
Use it to set up an Alerts Push API receiver, configure certificate-based security, optionally add basic authentication, and handle fraud or dispute alerts.
Why use it?
It clarifies that delivery is authenticated through mutual TLS rather than a message signature, preventing incorrect security checks.

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/ethoca-webhooks
Any agent
npx skills add hookdeck/webhook-skills --skill ethoca-webhooks
Clone the repo
git clone --depth 1 https://github.com/hookdeck/webhook-skills

Made for: Claude Code, Codex.

Per session 59 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,848 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 81% 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.00059 $0.01848
Opus 5 $0.00030 $0.00924
Sonnet 5 $0.00012 $0.00370
Haiku 4.5 $0.00006 $0.00185

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

Security

Grade A, and why

ethoca-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 2d ago.

The scan reads SKILL.md. This mod also ships 7 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

81% identical to adyen-webhooks — 185 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/ethoca-webhooks/SKILL.md · 150 lines

How it starts

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

Ethoca Webhooks

Ethoca (a Mastercard company) delivers Alerts — early fraud and dispute notifications from issuers — to merchants. The Alerts Push API HTTPS-POSTs JSON to an endpoint you register with the Ethoca Customer Delivery Team.

When to Use This Skill

  • How do I receive Ethoca Alerts webhooks (Push API)?
  • How do I secure an Ethoca webhook endpoint without a signature header?
  • How do I handle Ethoca fraud and dispute alerts?
  • Why is there no X-Ethoca-Signature / HMAC header to verify?
  • How does Ethoca mTLS (MSSL) delivery work?

Verification (core)

There is NO per-message HMAC/signature header on Ethoca Push API alerts. Do not look for X-Ethoca-Signature or a Standard Webhooks header — none exists. Trust is established primarily by the transport:

  1. Transport — mutual TLS (MSSL) — the definitive check. Ethoca presents a client certificate; your server must trust the Entrust CA and require a client cert. This is enforced at your TLS terminator / load balancer, not in app code, and is the actual mechanism that authenticates the delivery.
  2. Application — HTTP Basic Auth (OPTIONAL). If you agree Basic Auth credentials with the Ethoca Customer Delivery Team at onboarding, Ethoca sends Authorization: Basic base64(username:password) and your handler checks it. Whether Ethoca sends Basic Auth is not guaranteed by the API — an endpoint secured by mTLS alone may receive no Authorization header.

An IP allowlist of Ethoca's egress ranges is a recommended additional layer.

Enforce Basic Auth only when credentials are configured — if none are set, accept the delivery and rely on mTLS rather than returning 401. When configured, verify the credentials with a timing-safe comparison. Node:

const crypto = require('crypto');

function safeEqual(a, b) {
  const ab = Buffer.from(a), bb = Buffer.from(b);
  return ab.length === bb.length && crypto.timingSafeEqual(ab, bb);
}

function verifyEthocaAuth(authHeader, username, password) {
  if (!authHeader || !authHeader.startsWith('Basic ')) return false;
  const decoded = Buffer.from(authHeader.slice(6), 'base64').toString('utf-8');
  const i = decoded.indexOf(':');
  if (i === -1) return false;
  return safeEqual(decoded.slice(0, i), username) &&
         safeEqual(decoded.slice(i + 1), password);
}

Read the full file on GitHub · 150 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. 2d ago First seen · 150 lines · 59 tokens per session scan A 0548596ffdd4

Subscribe to this mod's changes

ethoca-webhooks is a skill published in the GitHub repository hookdeck/webhook-skills (84 stars, last pushed 6d ago), licensed MIT. It adds 59 tokens to every session and 1,848 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. It is 81% identical to adyen-webhooks, differing in 185 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