home / skills / openclaw / skills / alchemy-pay

alchemy-pay skill

/skills/0xterrybit/alchemy-pay

This skill helps you integrate Alchemy Pay fiat-to-crypto payments across on-ramp, off-ramp, and NFT checkout with secure API usage.

npx playbooks add skill openclaw/skills --skill alchemy-pay

Review the files below or copy the command above to add this skill to your agents.

Files (3)
SKILL.md
4.1 KB
---
name: alchemy-pay
description: Alchemy Pay (ACH) fiat-to-crypto payment gateway integration. On-ramp, off-ramp, merchant payments, and NFT checkout services.
metadata: {"clawdbot":{"emoji":"💎","requires":{"bins":["curl","jq"],"env":["ALCHEMY_PAY_APP_ID","ALCHEMY_PAY_SECRET"]}}}
---

# Alchemy Pay 💎

Hybrid payment infrastructure connecting crypto and traditional finance. Integrated with Binance Pay, Solana Pay, and 300+ payment channels worldwide.

## Environment Variables

| Variable | Description | Required |
|----------|-------------|----------|
| `ALCHEMY_PAY_APP_ID` | Merchant App ID | Yes |
| `ALCHEMY_PAY_SECRET` | API Secret Key | Yes |
| `ALCHEMY_PAY_ENV` | Environment: `sandbox` or `production` | No (default: sandbox) |

## Features

- 🔄 **On-Ramp** - Buy crypto with fiat (170+ countries)
- 💸 **Off-Ramp** - Sell crypto to fiat
- 🛒 **Merchant Payments** - Accept crypto payments
- 🎨 **NFT Checkout** - Fiat-to-NFT purchases
- 🌍 **Global Coverage** - Strong in Asia & LATAM

## API Endpoints

### Base URLs
- Sandbox: `https://openapi-test.alchemypay.org`
- Production: `https://openapi.alchemypay.org`

### Create On-Ramp Order

```bash
APP_ID="${ALCHEMY_PAY_APP_ID}"
SECRET="${ALCHEMY_PAY_SECRET}"
BASE_URL="${ALCHEMY_PAY_ENV:-sandbox}"
[[ "$BASE_URL" == "production" ]] && BASE_URL="https://openapi.alchemypay.org" || BASE_URL="https://openapi-test.alchemypay.org"

TIMESTAMP=$(date +%s)
NONCE=$(openssl rand -hex 16)

# Create signature
SIGN_STRING="appId=${APP_ID}&nonce=${NONCE}&timestamp=${TIMESTAMP}"
SIGNATURE=$(echo -n "${SIGN_STRING}${SECRET}" | sha256sum | cut -d' ' -f1)

curl -s -X POST "${BASE_URL}/open/api/v4/merchant/order/create" \
  -H "Content-Type: application/json" \
  -H "appId: ${APP_ID}" \
  -H "timestamp: ${TIMESTAMP}" \
  -H "nonce: ${NONCE}" \
  -H "sign: ${SIGNATURE}" \
  -d '{
    "crypto": "USDT",
    "network": "ETH",
    "fiat": "USD",
    "fiatAmount": "100",
    "walletAddress": "<USER_WALLET>",
    "callbackUrl": "https://your-callback.com/webhook"
  }' | jq '.'
```

### Get Supported Cryptocurrencies

```bash
curl -s "${BASE_URL}/open/api/v4/merchant/crypto/list" \
  -H "appId: ${APP_ID}" \
  -H "timestamp: ${TIMESTAMP}" \
  -H "nonce: ${NONCE}" \
  -H "sign: ${SIGNATURE}" | jq '.data'
```

### Get Exchange Rate

```bash
curl -s "${BASE_URL}/open/api/v4/merchant/price" \
  -H "appId: ${APP_ID}" \
  -H "timestamp: ${TIMESTAMP}" \
  -H "nonce: ${NONCE}" \
  -H "sign: ${SIGNATURE}" \
  -G --data-urlencode "crypto=BTC" \
     --data-urlencode "fiat=USD" | jq '.data'
```

### Check Order Status

```bash
ORDER_ID="<ORDER_ID>"

curl -s "${BASE_URL}/open/api/v4/merchant/order/query" \
  -H "appId: ${APP_ID}" \
  -H "timestamp: ${TIMESTAMP}" \
  -H "nonce: ${NONCE}" \
  -H "sign: ${SIGNATURE}" \
  -G --data-urlencode "orderId=${ORDER_ID}" | jq '.'
```

## Supported Payment Methods

| Region | Methods |
|--------|---------|
| Global | Visa, Mastercard, Apple Pay, Google Pay |
| Asia | Alipay, WeChat Pay, GrabPay, GCash |
| LATAM | PIX, SPEI, PSE |
| Europe | SEPA, iDEAL, Bancontact |

## Supported Cryptocurrencies

- **EVM**: ETH, USDT, USDC, BNB, MATIC
- **Solana**: SOL, USDC-SPL
- **Bitcoin**: BTC
- **Others**: TRX, AVAX, ARB

## Widget Integration

```html
<!-- Embed Alchemy Pay widget -->
<iframe 
  src="https://ramp.alchemypay.org?appId=YOUR_APP_ID&crypto=ETH&network=ETH&fiat=USD"
  width="400" 
  height="600"
  frameborder="0">
</iframe>
```

## Webhook Events

| Event | Description |
|-------|-------------|
| `PAY_SUCCESS` | Payment completed |
| `PAY_FAIL` | Payment failed |
| `REFUND_SUCCESS` | Refund processed |

## Safety Rules

1. **ALWAYS** verify webhook signatures
2. **NEVER** expose API secrets in client-side code
3. **ALWAYS** use HTTPS for callbacks
4. **VERIFY** order amounts match expected values

## Error Codes

| Code | Description |
|------|-------------|
| 10001 | Invalid signature |
| 10002 | Invalid parameters |
| 10003 | Order not found |
| 20001 | Insufficient balance |

## Links

- [Alchemy Pay Docs](https://alchemypay.readme.io/)
- [Dashboard](https://dashboard.alchemypay.org/)
- [Status Page](https://status.alchemypay.org/)

Overview

This skill integrates Alchemy Pay (ACH) as a fiat-to-crypto payment gateway for on-ramp, off-ramp, merchant payments, and NFT checkout flows. It provides server-side helpers and examples to create orders, query rates, list supported assets, and embed the payment widget. The skill is designed for backend services that need secure gateway access across 170+ countries and multiple local payment channels.

How this skill works

The integration uses Alchemy Pay REST endpoints (sandbox and production) and HMAC-like signatures built from appId, nonce, timestamp, and the merchant secret to authenticate requests. Implementations include endpoints to create on-ramp/off-ramp orders, fetch supported cryptocurrencies and exchange rates, query order status, and handle webhook events for payment lifecycle updates. The widget iframe supports quick client-side checkout while keeping secrets on the server.

When to use it

  • Enable fiat-to-crypto on-ramps for global customers
  • Offer fiat payouts or off-ramp services to users
  • Accept cryptocurrency payments for e-commerce or NFT sales
  • Support local payment methods across Asia and LATAM
  • Provide an embeddable checkout widget for fast integration

Best practices

  • Keep ALCHEMY_PAY_SECRET only on trusted backend servers; never expose in client code
  • Always verify webhook signatures and timestamps to prevent spoofing
  • Use sandbox environment for development and switch to production via ALCHEMY_PAY_ENV
  • Validate order amounts and currency matches between your system and callback payloads
  • Use HTTPS for all callback URLs and rotate secrets periodically

Example use cases

  • Create an on-ramp flow letting customers buy USDT or ETH with Visa, Alipay, or local rails
  • Offer merchant checkout for NFT purchases where users pay in fiat and receive an NFT
  • Implement an off-ramp to allow users to sell crypto and receive local bank transfers or PIX
  • Embed the Alchemy Pay iframe in a mobile web checkout for a fast payment experience
  • Poll order status via API and reconcile payments to internal order IDs using webhook events

FAQ

Which environment should I use for testing?

Use the sandbox base URL during development and testing. Switch ALCHEMY_PAY_ENV to production only after validating flows.

How do I authenticate API requests?

Create a signature by concatenating appId, nonce, timestamp and hashing with your secret as shown in examples; include appId, timestamp, nonce, and sign headers.

What webhook events should I handle?

Handle PAY_SUCCESS, PAY_FAIL, and REFUND_SUCCESS at minimum. Always verify webhook signatures and confirm order amounts before fulfilling.