moonpay-payments
Build, scaffold, and integrate MoonPay crypto on-ramp (buy) and off-ramp (sell) payments into a website or app — the embeddable Widget (@moonpay/moonpay-js /…
Skill by github.com/kryptobaseddev
Install
Works with Claude Code. Read the repository before you give any tool access to your data.
npx agentmarket install skill/kryptobaseddev-moonpay-payments
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: frontend, backend, finance
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
- Runs as
- Python package
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/moonpay-payments
Tools it pre-approves 7
From allowed-tools in SKILL.md: the agent may use these without asking you each time.
BashReadWriteEditGlobGrepWebFetch
What's inside
- Skill name
moonpay-payments- Description
- Build, scaffold, and integrate MoonPay crypto on-ramp (buy) and off-ramp (sell) payments into a website or app — the embeddable Widget (@moonpay/moonpay-js / -react / -node) and the headless Platform + Frames product (@moonpay/platform-sdk-web). Ships a generator (scripts/scaffold-moonpay.mjs) that emits a complete, runnable integration — server-side URL signing, the frontend widget, a verified webhook handler, env, and README — so you stand up a working on-ramp/off-ramp in one command, then customize. Use whenever the user wants to add, build, generate, or scaffold fiat↔crypto buy/sell, a crypto checkout or 'shopping-style' payment processor, embed a buy/sell widget, integrate MoonPay, do crypto onboarding/KYC, sign a MoonPay widget URL, verify MoonPay webhooks, or build headless/co-branded Apple Pay / Google Pay / card crypto payments — even if they only say 'MoonPay', 'on-ramp', 'off-ramp', or 'buy crypto in my app'. Also bundles tested signing + webhook scripts and source-cited references.
- License
- MIT
- Compatibility
- Bundled scripts need Node 18+ (sign-url.js / verify-webhook.js) and/or Python 3.8+ stdlib (sign_url.py / verify_webhook.py), plus bash + curl for preflight. Integrations target any web/mobile stack (vanilla JS, React, React Native, iOS, Android, server-side Node/PHP/Python/Ruby). A MoonPay partner account and API keys are required — get them at https://dashboard.moonpay.com/developers.
- Allowed tools
- Bash, Read, Write, Edit, Glob, Grep, WebFetch
- Metadata
- author: github.com/kryptobaseddev · version: 1.1.0 · category: payments · last_updated: 2026-06-12 23:30:00
- Instructions
- 205 lines in SKILL.md · view on GitHub
Before installing
- Ships executable scripts
- Pre-approves any shell command
- Instructions call the network
Files (15)
- SKILL.md
- evals.json · evals/
- going-live.md · references/
- platform-frames.md · references/
- webhooks.md · references/
- widget-api.md · references/
- widget-offramp.md · references/
- widget-onramp.md · references/
- widget-sdk.md · references/
- moonpay-preflight.sh · scripts/
- scaffold-moonpay.mjs · scripts/
- sign-url.js · scripts/
- sign_url.py · scripts/
- verify-webhook.js · scripts/
- verify_webhook.py · scripts/
SKILL.md (first lines)
# MoonPay Payments — On-Ramp & Off-Ramp Integration
Add fiat↔crypto payments to a site or app: let customers **buy** crypto with a
card / Apple Pay / Google Pay / bank transfer (on-ramp) and **sell** crypto back
to fiat (off-ramp). MoonPay handles KYC, compliance, fraud, payments, and
payouts; you embed the UI and react to transaction events.
MoonPay ships **two distinct products** — pick one deliberately, because their
SDKs, hosts, auth headers, and mental models differ:
| | **Widget** (`/widget/*` docs) | **Platform + Frames** (`/platform/*` docs) |
|---|---|---|
| What | Hosted, drop-in buy/sell/swap UI you embed or open | Headless / co-branded payments you build into your own UX |
| You control | Pre-fill + theming; MoonPay owns the screens | The whole purchase UX; MoonPay owns compliance/risk only |
| Frontend SDK | `@moonpay/moonpay-js`, `@moonpay/moonpay-react`, `@moonpay/react-native-moonpay-sdk` | `@moonpay/platform-sdk-web` (+ Frames) |
| Server SDK | `@moonpay/moonpay-node` (URL signing) | raw REST (`X-Api-Key`) |
| Client auth | publishable key on the URL + **signed** URL | server-minted **session token** → in-memory access/client tokens |
| Hosts | `buy.moonpay.com` / `sell.moonpay.com` | frames at `blocks.moonpay.com`, API at `api.moonpay.com/platform/v1` |
| Best for | Fastest "buy crypto" button, a checkout-style flow, minimal code | Bespoke, fully-branded, headless Apple/Google/card pay, deep onboarding |
**Default recommendation:** for "a seamless shopping-style payment processor"
where you want speed and don't need to own every pixel, start with the **Widget
on-ramp** (`@moonpay/moonpay-js`). Reach for **Platform + Frames** when you must
render your own buy screen, do headless Apple/Google Pay, or co-brand the
onboarding. The two are not mixed within a single flow.
→ Decision still unclear? Read `references/widget-onramp.md` (Widget) and
`references/platform-frames.md` (Platform) intros, then choose.
## Facts that prevent broken work
| Fact | Consequence |
|---|---|
| **Three key types**: `pk_…` publishable (browser-safe), `sk_…` secret (server-only), and a separate **webhook key** | Signing with `pk_`, verifying webhooks with `sk_`, or leaking `sk_` to the client are the most common failures |
| Environment is the **key prefix**, not a different URL: `*_test_*`→sandbox, `*_live_*`→production | A live key on a "sandbox-looking" `buy.moonpay.com` URL charges real money; test data silently fails on a live key |
| **Widget URL signing** = `base64(HMAC-SHA256(secretKey, new URL(url).search))`, appended as `&signature=` | Required whenever `walletAddress`/`walletAddresses`/`email` are present; sign **server-side** — use `scripts/sign-url.js` |
| Widget server API auth: `Authorization: Api-Key sk_…` **header** (or `apiKey=pk_…` query for public reads) | It is **not** `Bearer` and **not** `X-Api-Key`. Copying a Platform call here returns 401 |
| Platform API auth: `X-Api-Key: sk_…` (server) then `Authorization: Bearer <accessToken>` (client) | Different product, different headers — see the table above |
| Webhooks: verify the **`Moonpay-Signature-V2`** header (`t=…,s=…`) as `HMAC-SHA256(webhookKey, "t.rawBody")` | Verify against the **raw** body, with the **webhook key** — use `scripts/verify-webhook.js`. Events can duplicate / arrive out of order → de-dupe |
| Off-ramp (sell): **your app sends the crypto** to MoonPay's deposit address, then returns `{ depositId }` | Deposit must land within **48h** or the sell fails with "Deposit timeout". This is the step integrators miss |
| Apple Pay / Google Pay are **not** supported in the Widget `overlay` variant | Use `embedded`/`newTab`, or the Platform `setupApplePay`/`setupGooglePay` frames |
| Embedding needs both **domain allowlisting** (dashboard → Developers) **and** a page CSP allowing `https://*.moonpay.com/` (`frame-src`, `connect-src`) | Missing either → frames silently refuse to load with a `frame-ancestors` CSP error |
| The quote `signature` (Platform) is an **opaque** string | Never `JSON.parse` it — pass it verbatim to `setupBuy`/`setupWidget` |
## Preflight
Run once to confirm tooling + keys before writing code:
```bash
bash scripts/moonpay-preflight.sh # local checks
bash scripts/moonpay-preflight.sh --probe # also pings the widget API
```
It checks node/python/curl, finds `MOONPAY_*` keys, validates prefixes, and
flags the classic mistakes (mixed test/live keys, a secret key in a
frontend-exposed var). It validates key **format**, not validity — a 401 on the
first real call is what proves a key is live and enabled.
## Build an integration in one command (scaffold)
The fastest way to stand up a working on-ramp/off-ramp is to **generate** it,
then customize. `scripts/scaffold-moonpay.mjs` writes a complete, runnable
project — server-side signing, the frontend widget, a verified webhook handler,
an `.env` template, and a README — with the HMAC signing + webhook verification
**inlined** (the generated project has no dependency on this skill).
```bash
# Widget buy+sell into ./moonpay-integration (vanilla JS frontend)
node scripts/scaffold-moonpay.mjs --out ./moonpay-integration --flow both
# React frontend, buy only
node scripts/scaffold-moonpay.mjs --flow buy --frontend react --out ./pay
# Headless Platform + Frames (custom UI, Apple/Google Pay, onboarding)
node scripts/scaffold-moonpay.mjs --product platform --frontend react --out ./pay
node scripts/scaffold-moonpay.mjs --help # all flags; --dry-run previews
```
Flags: `--product widget|platform`, `--flow buy|sell|both` (widget),
`--frontend vanilla|react`, `--out DIR`, `--force`, `--dry-run`. It refuses to
overwrite without `--force`. After generating: `cd <dir>`, `npm install` the
printed deps, `cp .env.example .env`, fill in sandbox keys, `node server/server.js`.
Then **customize** the emitted code using the references below — the scaffold is
a correct starting skeleton, not a black box. Tailor the params, theming, order
fulfillment, and (for sell) the on-chain deposit step to your app.
## Quick start — Widget on-ramp (understand the moving parts)
If you'd rather wire it by hand (or need to graft MoonPay into an existing app),
here's the shortest path to "buy crypto" on a website: a server endpoint that
signs the URL with your secret key, the SDK on the frontend, and a webhook that
marks the order paid. Sandbox keys (`pk_test_`/`sk_test_`) run the whole thing
for free. (This is exactly what the scaffolder emits.)
**1 — Frontend: render the buy widget** (`npm install @moonpay/moonpay-js`)
```ts
import { loadMoonPay } from "@moonpay/moonpay-js";
const moonPay = await loadMoonPay();
const widget = moonPay({
flow: "buy",
environment: "sandbox", // "production" with a pk_live_ key
variant: "overlay", // embedded | overlay | newTab | newWindow
params: {
apiKey: "pk_test_…",
baseCurrencyCode: "usd", // fiat the customer pays
baseCurrencyAmount: "100",
defaultCurrencyCode: "eth", // crypto they receive
walletAddress: "0x…", // ⇒ this makes the URL require a signature
externalTransactionId: "order_12345", // tie it to your order
},
handlers: {
async onTransactionCompleted(props) {
// UI hint only — treat the WEBHOOK as the source of truth for fulfillment
console.log("completed", props.id, props.status);
},From kryptobaseddev/awesome-skills, MIT.
More from kryptobaseddev/awesome-skills
- 0.570score
deuxui
github.com/kryptobaseddev
Engineer and verify interfaces against a 235-rule UX contract with runnable checks, not opinions.
SkillAFreshness: AClaude Code - 0.565score
flarectl
kryptobaseddev
Cloudflare CLI management via the flarectl tool.
SkillAFreshness: AClaude Code +9 - 0.529score
proxmox-admin
github.com/kryptobaseddev
Use this skill to administer a Proxmox VE 8.x/9.x host, node, or cluster remotely — provisioning, day-2 ops, troubleshooting, hardening, IaC, migration off…
SkillBFreshness: BClaude Code +9 - 0.529score
neon
kryptobaseddev
Neon CLI (`neon`, formerly `neonctl`) for Lakebase Postgres — projects, branches, databases, roles, connection strings, snapshots, Functions, object-storage…
SkillBFreshness: BClaude Code +9 - 0.520score
neonctl
kryptobaseddev
DEPRECATED POINTER — this skill was renamed to `neon` when the Neon CLI itself was renamed from `neonctl` to `neon`.
SkillBFreshness: BClaude Code +9 - 0.479score
3d-parametric-models
github.com/kryptobaseddev
Model parametric 3D geometry as code and edit mesh files programmatically.
SkillCFreshness: CClaude Code - 0.479score
quo
github.com/kryptobaseddev
Build, scaffold, and integrate Quo — formerly OpenPhone — telephony into a full-stack app: send & receive SMS/text messages, list and analyze calls…
SkillCFreshness: CClaude Code - 0.479score
better-auth
github.com/kryptobaseddev
Implement Better Auth (better-auth.com) — the framework-agnostic TypeScript authentication library — across ANY stack: Next.js, SvelteKit, Nuxt, SolidStart…
SkillCFreshness: CClaude Code - 0.479score
resend
resend
Use when working with the Resend email API — sending transactional emails (single or batch), receiving inbound emails via webhooks, managing email templates…
SkillCFreshness: CClaude Code +9 - 0.479score
image-nanobanana
github.com/kryptobaseddev
Generate and edit production-ready, watermark-free image assets with Google's Nano Banana models — gemini-3.1-flash-image (Nano Banana 2) and…
SkillCFreshness: CClaude Code +9 - 0.479score
plugin-creator
github.com/kryptobaseddev
Scaffold, validate, test, and ship a production-grade Claude Code plugin + marketplace — especially the pattern where the plugin's ONLY component is an MCP…
SkillCFreshness: CClaude Code +9 - 0.474score
code-optimizer
kryptobaseddev
Deep code optimization audit using parallel specialist agents.
SkillCFreshness: CClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Jun 13, 2026 (4 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- Version
- 1.1.0
- License
- MIT
- Repository
- github.com/kryptobaseddev/awesome-skills
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from github.com/kryptobaseddev
- 0.570score
deuxui
github.com/kryptobaseddev
Engineer and verify interfaces against a 235-rule UX contract with runnable checks, not opinions.
SkillAFreshness: AClaude Code - 0.529score
proxmox-admin
github.com/kryptobaseddev
Use this skill to administer a Proxmox VE 8.x/9.x host, node, or cluster remotely — provisioning, day-2 ops, troubleshooting, hardening, IaC, migration off…
SkillBFreshness: BClaude Code +9 - 0.479score
better-auth
github.com/kryptobaseddev
Implement Better Auth (better-auth.com) — the framework-agnostic TypeScript authentication library — across ANY stack: Next.js, SvelteKit, Nuxt, SolidStart…
SkillCFreshness: CClaude Code - 0.479score
plugin-creator
github.com/kryptobaseddev
Scaffold, validate, test, and ship a production-grade Claude Code plugin + marketplace — especially the pattern where the plugin's ONLY component is an MCP…
SkillCFreshness: CClaude Code +9 - 0.479score
quo
github.com/kryptobaseddev
Build, scaffold, and integrate Quo — formerly OpenPhone — telephony into a full-stack app: send & receive SMS/text messages, list and analyze calls…
SkillCFreshness: CClaude Code - 0.479score
image-nanobanana
github.com/kryptobaseddev
Generate and edit production-ready, watermark-free image assets with Google's Nano Banana models — gemini-3.1-flash-image (Nano Banana 2) and…
SkillCFreshness: CClaude Code +9
Cite this page
moonpay-payments skill. Agent Mart. https://agentmart.dev/skills/kryptobaseddev-moonpay-payments (last updated 2026-10-24)