Agent Payments
The universal payment skill for AI agents. Fiat payments via Stripe (invoices, subscriptions, one-time charges), crypto payments via Coinbase Commerce (accep...
Like a lobster shell, security has layers — review code before you run it.
License
Runtime requirements
SKILL.md
💳 Agent Payments — Every Payment Rail for AI Agents
One skill. Every payment rail your agent needs.
- Stripe — Fiat payments, invoices, subscriptions, payment links
- Coinbase Commerce — Accept crypto (BTC, ETH, USDC) through a trusted brand
- Spraay — Batch payments to multiple recipients across 13+ chains, x402 micropayments for agent-to-agent commerce
Quick Start
Which rail do I need?
| Use Case | Rail | Command |
|---|---|---|
| Charge a customer in USD | Stripe | pay stripe charge |
| Create an invoice | Stripe | pay stripe invoice |
| Set up recurring billing | Stripe | pay stripe subscribe |
| Accept crypto from a customer | Coinbase | pay coinbase charge |
| Pay 1 person in USDC/ETH | Spraay | pay spraay send |
| Pay 10-1000 people at once | Spraay | pay spraay batch |
| Agent-to-agent micropayment | Spraay x402 | pay spraay x402 |
| Payroll (team/contractors) | Spraay | pay spraay payroll |
| Check any payment status | Any | pay status <id> |
Setup
Each payment rail requires its own API key. You only need to configure the rails you use:
# Fiat payments (Stripe)
export STRIPE_SECRET_KEY="sk_live_..."
# Crypto acceptance (Coinbase Commerce)
export COINBASE_COMMERCE_API_KEY="..."
# Batch + x402 payments (Spraay)
export SPRAAY_GATEWAY_URL="https://gateway.spraay.app"
The skill works with any combination — install once, enable rails as needed.
Rail 1: Stripe (Fiat Payments)
Full Stripe integration for traditional payment processing. Your agent can charge customers, create invoices, manage subscriptions, and generate payment links.
Create a Payment (One-Time Charge)
curl -X POST https://api.stripe.com/v1/payment_intents \
-u "$STRIPE_SECRET_KEY:" \
-d amount=2000 \
-d currency=usd \
-d "payment_method_types[]"=card \
-d description="Service payment"
Parameters:
amount— Amount in cents (2000 = $20.00)currency— Three-letter ISO code (usd, eur, gbp, etc.)description— What the payment is forreceipt_email— Optional, sends receipt to customermetadata[key]— Custom key-value pairs for your records
Create an Invoice
# Step 1: Create invoice item
curl -X POST https://api.stripe.com/v1/invoiceitems \
-u "$STRIPE_SECRET_KEY:" \
-d customer="cus_..." \
-d amount=5000 \
-d currency=usd \
-d description="Consulting — March 2026"
# Step 2: Create and send invoice
curl -X POST https://api.stripe.com/v1/invoices \
-u "$STRIPE_SECRET_KEY:" \
-d customer="cus_..." \
-d collection_method=send_invoice \
-d days_until_due=30
# Step 3: Finalize and send
curl -X POST https://api.stripe.com/v1/invoices/{invoice_id}/finalize \
-u "$STRIPE_SECRET_KEY:"
curl -X POST https://api.stripe.com/v1/invoices/{invoice_id}/send \
-u "$STRIPE_SECRET_KEY:"
Create a Subscription
curl -X POST https://api.stripe.com/v1/subscriptions \
-u "$STRIPE_SECRET_KEY:" \
-d customer="cus_..." \
-d "items[0][price]"="price_..." \
-d payment_behavior=default_incomplete
Create a Payment Link
curl -X POST https://api.stripe.com/v1/payment_links \
-u "$STRIPE_SECRET_KEY:" \
-d "line_items[0][price]"="price_..." \
-d "line_items[0][quantity]"=1
Check Payment Status
curl https://api.stripe.com/v1/payment_intents/{pi_id} \
-u "$STRIPE_SECRET_KEY:"
Status values: requires_payment_method, requires_confirmation, requires_action, processing, succeeded, canceled
Refund a Payment
curl -X POST https://api.stripe.com/v1/refunds \
-u "$STRIPE_SECRET_KEY:" \
-d payment_intent="pi_..."
For detailed Stripe API reference, see references/stripe-rail.md.
Rail 2: Coinbase Commerce (Crypto Acceptance)
Accept cryptocurrency payments through Coinbase Commerce. Customers pay in BTC, ETH, USDC, or other supported coins. Funds settle to your Coinbase account.
Create a Charge
curl -X POST https://api.commerce.coinbase.com/charges \
-H "Content-Type: application/json" \
-H "X-CC-Api-Key: $COINBASE_COMMERCE_API_KEY" \
-d '{
"name": "Service Payment",
"description": "Payment for consulting services",
"pricing_type": "fixed_price",
"local_price": {
"amount": "100.00",
"currency": "USD"
},
"metadata": {
"customer_id": "cust_123",
"order_id": "ord_456"
}
}'
Response includes:
hosted_url— Coinbase-hosted checkout page (redirect customer here)addresses— Direct crypto addresses for each supported coinexpires_at— Charge expires after 60 minutes
Check Charge Status
curl https://api.commerce.coinbase.com/charges/{charge_id} \
-H "X-CC-Api-Key: $COINBASE_COMMERCE_API_KEY"
Status timeline: NEW → PENDING → CONFIRMED / FAILED / EXPIRED
List All Charges
curl https://api.commerce.coinbase.com/charges \
-H "X-CC-Api-Key: $COINBASE_COMMERCE_API_KEY"
Cancel a Charge
curl -X POST https://api.commerce.coinbase.com/charges/{charge_id}/cancel \
-H "X-CC-Api-Key: $COINBASE_COMMERCE_API_KEY"
For detailed Coinbase Commerce reference, see references/coinbase-rail.md.
Rail 3: Spraay (Batch Payments + x402 Micropayments)
Spraay is the batch payment and micropayment layer. Pay multiple recipients in a single transaction across 13+ blockchains, or use x402 micropayments for agent-to-agent commerce.
What makes Spraay unique: Neither Stripe nor Coinbase can send payments to multiple recipients at once. Spraay does this natively — pay your whole team, distribute tokens to a community, or airdrop to thousands of addresses in one transaction.
Batch Payment (Multiple Recipients)
# Pay 3 people on Base in one transaction
curl -X POST "$SPRAAY_GATEWAY_URL/api/batch" \
-H "Content-Type: application/json" \
-d '{
"chain": "base",
"token": "USDC",
"recipients": [
{"address": "0xAlice...", "amount": "100.00"},
{"address": "0xBob...", "amount": "75.50"},
{"address": "0xCharlie...", "amount": "200.00"}
]
}'
Single Send
curl -X POST "$SPRAAY_GATEWAY_URL/api/send" \
-H "Content-Type: application/json" \
-d '{
"chain": "base",
"token": "USDC",
"to": "0xRecipient...",
"amount": "50.00"
}'
Supported Chains (13+)
Base, Ethereum, Arbitrum, Polygon, BNB Chain, Avalanche, Unichain, Plasma, BOB, Solana, Bittensor, Stacks, Bitcoin
x402 Micropayments (Agent-to-Agent)
x402 enables pay-per-request API calls. Your agent pays fractions of a cent per call — no subscriptions, no API keys, just HTTP payments.
# Any x402-enabled endpoint — payment happens via HTTP headers
curl "$SPRAAY_GATEWAY_URL/api/ai/inference" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-20250514",
"prompt": "Summarize this document"
}'
The Spraay gateway has 76+ x402 endpoints across 16 categories:
- AI Inference, Search/RAG, Communication (Email, XMTP)
- IPFS/Storage, Compliance (KYC/AML), Oracle, GPU/Compute
- RPC (7 chains), Data Reads, Bridge, Escrow, Payroll
- Wallet Provisioning, DeFi Reads, Robot Task Protocol
Bitcoin Batch Payments (PSBT)
# Prepare a Bitcoin batch transaction
curl -X POST "$SPRAAY_GATEWAY_URL/api/bitcoin/batch-prepare" \
-H "Content-Type: application/json" \
-d '{
"fromAddress": "bc1q...",
"recipients": [
{"address": "bc1qAlice...", "amountSats": 50000},
{"address": "bc1qBob...", "amountSats": 75000}
],
"feeRate": 10
}'
For detailed Spraay reference, see references/spraay-rail.md.
Cross-Rail Workflows
Workflow: Accept fiat, pay team in crypto
- Customer pays via Stripe →
pay stripe charge - Confirm payment received →
pay status <stripe_pi_id> - Batch pay your team in USDC via Spraay →
pay spraay batch
Workflow: Crypto invoice with fiat fallback
- Create Coinbase Commerce charge →
pay coinbase charge - If customer prefers fiat, create Stripe payment link →
pay stripe link - Track both →
pay status <id>
Workflow: Agent-to-agent service payment
- Agent A calls Agent B's API via x402 →
pay spraay x402 - Payment settles automatically via HTTP headers
- No invoicing, no accounts, no API keys needed
Workflow: Payroll (contractors worldwide)
- US contractors → Stripe (ACH/direct deposit)
- International contractors → Spraay batch (USDC on Base/Polygon)
- One skill handles both rails
Payment Status (Universal)
Check payment status across any rail:
# Stripe payment
./scripts/pay.sh status stripe pi_1234...
# Coinbase charge
./scripts/pay.sh status coinbase charge_5678...
# Spraay transaction
./scripts/pay.sh status spraay tx_9abc...
Reference Docs
See references/ for detailed documentation on each payment rail:
stripe-rail.md— Full Stripe API reference (PaymentIntents, Invoices, Subscriptions, Customers)coinbase-rail.md— Coinbase Commerce API reference (Charges, Webhooks, Checkout)spraay-rail.md— Spraay Protocol reference (Batch payments, x402 gateway, Bitcoin PSBT, supported chains, RTP)
Links
- Stripe Docs: https://docs.stripe.com
- Coinbase Commerce Docs: https://docs.cdp.coinbase.com/commerce
- Spraay Gateway: https://gateway.spraay.app
- Spraay Docs: https://docs.spraay.app
- GitHub: https://github.com/plagtech/agent-payments
Files
5 totalComments
Loading comments…
