Verified Ramp Webhook Receiver

VerifiedSafe

Build an idempotent Ramp webhook receiver with raw-body HMAC validation, fast acknowledgement, durable processing, and reconciliation.

Sby Skills Guide Bot
DevelopmentAdvanced
9/13/2026
Claude Code
#ramp#webhooks#hmac-verification#idempotency#event-processing

Recommended for

Automated summary

Guides building a verified, idempotent Ramp webhook receiver with raw-body HMAC-SHA256 validation, fast acknowledgement, durable processing, and reconciliation.

Strengths

  • Covers the full subscription lifecycle, including the `pending_verification` challenge that must be echoed and submitted before activation.
  • Requires verifying `X-Ramp-Signature` over exact raw bytes with constant-time comparison before any parsing.
  • Makes operational constraints explicit: respond within 10 seconds, up to 10 retries, reused event IDs, and out-of-order delivery.
  • Ships a concrete test matrix (duplicates, invalid signature, secret rotation, queue failure) plus a scheduled reconciliation job.

Limitations

  • Assumes approved Ramp API access (sandbox or production) and current official docs; the skill does not supply endpoint schemas itself.
  • Restricted to file tools (Read, Glob, Grep, Write, Edit), so it neither deploys anything nor calls Ramp APIs directly.
  • The error-handling table is truncated in the source document, so some failure cases must be re-derived from the official docs.
When to use it

Use it when you need to implement or harden a Ramp webhook endpoint handling transaction, bill, reimbursement, or spend-request events.

When not to use it

Avoid it for read-only Ramp REST polling integrations or for webhooks from providers other than Ramp.

Security analysis

Safe
Quality score80/100

The skill is a procedural guide for building a Ramp webhook receiver. Its allowed tools are limited to local file inspection and editing (Read, Glob, Grep, Write, Edit); there is no shell, network, or credential-exfiltration instruction anywhere. Guidance emphasizes raw-body HMAC verification with constant-time comparison, secret-manager storage, explicit owner approval before live operations, and treating unresolved vendor behavior as a stop condition. Writes are scoped to approved local drafts/artifacts with rollback boundaries, so no meaningful execution risk is present.

No concerns found

How this analysis is made

Examples

Build a Ramp receiver
Add a Ramp webhook receiver to our Node service: verify X-Ramp-Signature against the exact raw request body, dedupe by X-Ramp-Webhook-ID, durably enqueue, and only then return 2xx within 10 seconds.
Fix signature verification
Verify Ramp signature handling in our handler — some deliveries get rejected. Review the code and make sure it hashes the unparsed raw body with HMAC-SHA256 using the subscription secret and compares in constant time.
Challenge flow and tests
Walk me through completing the pending_verification challenge for our Ramp bill.updated subscription, then write tests for duplicate events, out-of-order delivery, invalid signatures, and secret rotation.

name: ramp-webhooks-events description: >- Build a verified, idempotent Ramp webhook receiver with raw-body HMAC validation, fast acknowledgement, durable processing, and reconciliation. Use when handling transaction, bill, reimbursement, spend-request, or other Ramp events. Trigger with "Ramp webhooks" or "verify Ramp signature". allowed-tools: Read,Glob,Grep,Write,Edit version: 2.0.0 argument-hint: "[integration-or-environment]" model: inherit effort: high author: Jeremy Longshore jeremy@intentsolutions.io license: MIT compatibility: Requires current Ramp Developer API documentation and approved access for any live financial, card, identity, accounting, application, or configuration change tags: [saas, ramp, webhooks, events, idempotency]

Ramp Webhook Verification and Processing

Overview

Verify authenticity before parsing, acknowledge only after durable receipt, and treat each event as a notification to reconcile current resource state. Design for retries, duplicates, and out-of-order delivery.

Prerequisites

  • Identify the Ramp application, environment, business entities, affected data and workflows, accountable owner, and rollback boundary.
  • Read references/official-docs.md and re-check endpoint schemas, scopes, limits, and support status before a live operation.
  • Use synthetic fixtures or Ramp sandbox until production access and business effects are explicitly approved.
  • Prepare approved secret storage and a sanitized evidence location.

Current Contract

  • New subscriptions begin pending_verification; Ramp sends a challenge that must be returned and submitted to activate the subscription.
  • Business deliveries include X-Ramp-Webhook-ID and X-Ramp-Signature; the latter is HMAC-SHA256 of the exact raw request body using the subscription secret.
  • Receivers must respond within 10 seconds. Ramp retries 429, 5xx, timeouts, and connection errors up to 10 total attempts with exponential backoff and jitter.
  • The same event ID is reused across retries, and events may arrive out of order.

Instructions

  1. Select only documented event types and underlying read scopes; register an HTTPS endpoint and store the returned webhook secret in an approved secret manager.

  2. Complete the challenge flow and record subscription ID, state, business, events, scopes, endpoint, secret version, and owner without logging the secret.

  3. Capture exact raw bytes, verify X-Ramp-Signature with constant-time comparison, validate expected event/business, then deduplicate by stable event ID.

  4. Durably enqueue the verified event before returning 2xx within 10 seconds; process asynchronously and fetch current resource state when business action needs full or ordered data.

  5. Test duplicates, invalid signature, unknown event, out-of-order events, 429/5xx retry, secret rotation, queue failure, and scheduled API reconciliation.

Tool Discipline

  • Use Glob to locate candidate code, manifests, fixtures, and evidence without widening scope.
  • Use Grep to find relevant endpoints, fields, permissions, identifiers, errors, and stale assumptions.
  • Use Read to inspect the smallest required local files and authoritative evidence.
  • Use Write only for a new approved local draft, test, configuration, or evidence artifact.
  • Use Edit only for a bounded approved change with a known rollback.
  • Local file tools do not authorize a Ramp operation or replace owner approval.

Approval Boundaries

Application/security owners approve endpoint and secret handling; data/finance owners approve subscribed objects and downstream actions. Production mock events require care because live receivers can process them as real activity.

Output

A subscription inventory, challenge receipt, raw-body verification design, event ledger, durable queue, retry and dedupe tests, reconciliation job, rotation plan, and monitoring.

Error Handling

| Condition | Response | |---|---| | Signature differs after parsing | Verify the original bytes before middleware mutation or JSON reserialization. | | Processing exceeds 10 seconds | Persist the verified event and acknowledge; move business work to an asynchronous consumer. | | An older event arrives after a newer one | Fetch current object state and apply a monotonic business transition rather than trusting arrival order. |

Examples

Example 1

Receive transactions.ready_to_sync, verify and enqueue it, fetch current transaction state, and create one idempotent ERP work item.

Example 2

Rotate a subscription secret while proving invalid signatures fail and duplicate event IDs never duplicate effects.

Validation

  • Pending verification reaches active state through the documented challenge.
  • Invalid signatures and unexpected business/event types fail before processing.
  • Durable receipt, 2xx timing, duplicate, retry, and out-of-order behavior are proven.
  • Periodic reconciliation detects events missed during extended downtime.

Resources

  • Official documentation and contract notes
  • Re-check the dated contract and current OpenAPI schema before any live request.
  • Treat unresolved vendor behavior, authority, or financial state as a stop condition.

From the file to a first result

The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.

View the source and supporting files

This download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.

1. Download the file

Download SKILL.md

From the root of a test project, save the file as .skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.

Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.

mkdir -p '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/verified-ramp-webhook-receiver-mtz9jqq1/download' --output '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md.part' && mv '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md.part' '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md'

2. Check prerequisites

Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.

Environment declared by the author: Requires current Ramp Developer API documentation and approved access for any live financial, card, identity, accounting, application, or configuration change

Tools declared by the author (check availability in your agent): Read,Glob,Grep,Write,Edit

Original excerpt: Prerequisites
  • Identify the Ramp application, environment, business entities, affected data and workflows, accountable owner, and rollback boundary.
  • Read references/official-docs.md and re-check endpoint schemas, scopes, limits, and support status before a live operation.
  • Use synthetic fixtures or Ramp sandbox until production access and business effects are explicitly approved.
  • Prepare approved secret storage and a sanitized evidence location.

The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.

3. Load the skill

After inspection, copy the complete folder into your project using one of the commands below, then open a new tool session. The command stops if a folder with the same name already exists: compare the files before replacing it.

Claude Code
test -f '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md' && test -s '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/ramp-webhooks-events' && cp -R '.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1' '.claude/skills/ramp-webhooks-events'

OpenSkills

OpenSkills must already be installed. The local install/read procedure is checked with OpenSkills 1.5.0, which requires Node.js ≥ 20.6.0. Catalog slugs are not resolved automatically.

Official OpenSkills installation
openskills install './.skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1'

openskills read 'verified-ramp-webhook-receiver-mtz9jqq1'

Reading should display the installed file content and its base directory. It does not run the skill or install its dependencies.

For an agent that reads AGENTS.md, then sync the index. This command changes AGENTS.md: review the diff before using it.

openskills sync

Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.

4. Try a first task

Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:

Read .skill-downloads/verified-ramp-webhook-receiver-mtz9jqq1/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.

Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.

Related skills