Documentation
Integrate Claude Pay in a few HTTP calls. Base URL: https://claude-pay.com/api/v1
Getting started
- Create a merchant account and confirm 2FA.
- Add at least one gateway from your dashboard — crypto wallet, card processor, mobile money, or any local rail.
- Create an API key with the
payment-intents:createability. - Register a webhook so your app is notified when a payment is confirmed.
Authentication
Server-to-server calls use a merchant API key as a Bearer token. Each key is scoped to abilities (payment-intents:create, billing:write, webhooks:read, webhooks:write).
Authorization: Bearer cp_live_xxxxxxxxxxxxxxxxxxxxCreate a payment intent
A payment intent is a single invoice. Pass an idempotency-safe custom_id to avoid duplicates.
POST /api/v1/payment-intents
Authorization: Bearer cp_live_…
Content-Type: application/json
{
"method": "bep20",
"asset": "USDT",
"amount": 25.00,
"custom_id": "ORDER-1042",
"customer_email": "[email protected]"
}
# 201 Created
{
"data": {
"id": "pi_…",
"status": "pending",
"receive_address": "0x…",
"amount": "25.000000",
"expires_at": "2026-05-29T12:34:56Z"
}
}Redirect the customer to the hosted checkout at https://claude-pay.com/checkout/?id={id}.
Checkout sessions
Let the customer choose the method. A session fans out one intent per enabled (method, asset) your plan allows.
POST /api/v1/checkout-sessions
{ "amount": 25.00, "customer_email": "[email protected]" }
# → { "data": { "primary": {…}, "options": [ {…}, {…} ] } }Webhooks
Register an HTTPS endpoint. We POST signed JSON on payment_intent.paid, .expired, and .refunded, with retries.
POST {your endpoint}
X-Claude-Pay-Event-Id: evt_…
X-Claude-Pay-Event-Type: payment_intent.paid
X-Claude-Pay-Signature: sha256=…
X-Claude-Pay-Timestamp: 1717000000
{ "id": "pi_…", "status": "paid", "amount": "25.000000", "asset": "USDT", … }Verify a signature
Compute HMAC-SHA256 over {timestamp}.{raw_body} with your signing secret and compare to the header.
// Node.js
import crypto from "crypto";
function verify(req, secret) {
const ts = req.headers["x-claude-pay-timestamp"];
const sig = req.headers["x-claude-pay-signature"];
const expected = "sha256=" + crypto
.createHmac("sha256", secret)
.update(ts + "." + req.rawBody)
.digest("hex");
return crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}Dhru Fusion module
One of two turnkey modules for popular reseller platforms. Sign in to your dashboard, open Module Setup → Dhru Fusion, download the module (login required), drop the files into your Dhru install, and paste your API key. Invoices confirm automatically — no code changes.
GSMTheme module
Ship ClaudePay on any GSMTheme site in ~3 minutes. Sign in to your dashboard, open Module Setup → GSMTheme, download the module (login required), upload two PHP files, and paste your API key. Your customers get hosted checkout for every rail you have enabled on your ClaudePay account. Invoices auto-confirm.
Personal wallet rails · bKash · Nagad · M-Money
Accept payments directly to your personal bKash, Nagad, or ATOMA Pay (M-Money) wallet — no merchant account required. Add your wallet number in the dashboard and pair your phone once; from then on, payments auto-confirm within seconds of the customer's transfer landing.
- What you need: your wallet number and an active plan. Bangladesh: bKash / Nagad. Afghanistan: ATOMA Pay.
- Android: install the small companion app from your dashboard, pair once, done.
- iPhone: follow the guided walkthrough at /ios-setup — ~3 minutes end to end.
- Confirmation: your invoice flips to paid within seconds; your webhook fires immediately after.