
Pay For Service
Call paid x402 HTTP APIs with automatic USDC settlement on Base after wallet auth and balance checks.
Overview
Pay-for-service is an agent skill for the Build phase that makes paid x402 API requests with automatic USDC payment on Base via the awal CLI.
Install
npx skills add https://github.com/coinbase/agentic-wallet-skills --skill pay-for-serviceWhat is this skill?
- Single CLI: npx awal@2.10.0 x402 pay with GET/POST, query, body, and custom headers
- USDC on Base with --max-amount cap in atomic units (1000000 = $1.00)
- Pre-flight status and balance checks before spending
- Pairs with search-for-service for discover-then-pay agent workflows
- JSON output mode for programmatic agent parsing
- Pinned awal CLI version 2.10.0 in allowed Bash tools
- max-amount uses USDC atomic units where 1000000 equals $1.00
Adoption & trust: 3k installs on skills.sh; 110 GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent found a paid API but you lack a repeatable, capped way to authorize USDC and complete the x402 HTTP call.
Who is it for?
Indie agent builders on Base who already use agentic wallet skills and need one-command paid API access after service discovery.
Skip if: Flows without an initialized/authenticated wallet, non-x402 billing, or teams that refuse on-chain USDC micropayments for API calls.
When should I use this skill?
You or the user want to call a paid API, make an x402 request, use a paid service, or pay for an API call—use after finding a service with search-for-service.
What do I get? / Deliverables
A paid endpoint returns its response after wallet status verification and an awal x402 pay invocation with optional max-amount guardrails.
- Paid API HTTP response (optionally --json)
- On-chain USDC payment receipt via awal x402 flow
Recommended Skills
Journey fit
How it compares
Skill package for awal x402 pay—not an MCP server and not a substitute for authenticate-wallet or search-for-service.
Common Questions / FAQ
Who is pay-for-service for?
Solo builders wiring Claude Code, Cursor, or Codex agents to metered x402 APIs on Base with USDC, typically after Coinbase agentic wallet setup.
When should I use pay-for-service?
During Build integrations when you or the user want to call a paid API, make an x402 request, use a paid service, or pay for an API call—especially right after finding a service with search-for-service.
Is pay-for-service safe to install?
It runs pinned awal CLI commands that move funds; confirm max-amount limits and wallet auth, and review the Security Audits panel on this Prism page before enabling Bash tools in production agents.
Workflow Chain
Requires first: authenticate wallet
SKILL.md
READMESKILL.md - Pay For Service
# Making Paid x402 Requests Use the `npx awal@2.10.0 x402 pay` command to call paid API endpoints with automatic USDC payment on Base. ## Confirm wallet is initialized and authed ```bash npx awal@2.10.0 status ``` If the wallet is not authenticated, refer to the `authenticate-wallet` skill. ## Command Syntax ```bash npx awal@2.10.0 x402 pay <url> [-X <method>] [-d <json>] [-q <params>] [-h <json>] [--max-amount <n>] [--json] ``` ## Options | Option | Description | | ----------------------- | -------------------------------------------------- | | `-X, --method <method>` | HTTP method (default: GET) | | `-d, --data <json>` | Request body as JSON string | | `-q, --query <params>` | Query parameters as JSON string | | `-h, --headers <json>` | Custom HTTP headers as JSON string | | `--max-amount <amount>` | Max payment in USDC atomic units (1000000 = $1.00) | | `--correlation-id <id>` | Group related operations | | `--json` | Output as JSON | ## USDC Amounts X402 uses USDC atomic units (6 decimals): | Atomic Units | USD | | ------------ | ----- | | 1000000 | $1.00 | | 100000 | $0.10 | | 50000 | $0.05 | | 10000 | $0.01 | **IMPORTANT**: Always single-quote amounts that use `$` to prevent bash variable expansion (e.g. `'$1.00'` not `$1.00`). ## Input Validation Before constructing the command, validate all user-provided values to prevent shell injection: - **url**: Must be a valid URL starting with `https://` or `http://`. Reject if it contains spaces, semicolons, pipes, backticks, or shell metacharacters. - **data (-d)**: Must be valid JSON. Always wrap in single quotes to prevent shell expansion. - **max-amount**: Must be a positive integer (`^\d+$`). Do not pass unvalidated user input into the command. ## Examples ```bash # Make a GET request (auto-pays) npx awal@2.10.0 x402 pay https://example.com/api/weather # Make a POST request with body npx awal@2.10.0 x402 pay https://example.com/api/sentiment -X POST -d '{"text": "I love this product"}' # Limit max payment to $0.10 npx awal@2.10.0 x402 pay https://example.com/api/data --max-amount 100000 ``` ## Prerequisites - Must be authenticated (`npx awal@2.10.0 status` to check, see `authenticate-wallet` skill) - Wallet must have sufficient USDC balance (`npx awal@2.10.0 balance` to check) - If you don't know the endpoint URL, use the `search-for-service` skill to find services first ## Error Handling - "Not authenticated" - Run `awal auth login <email>` first, or see `authenticate-wallet` skill - "No X402 payment requirements found" - URL may not be an x402 endpoint; use `search-for-service` to find valid endpoints - "Insufficient balance" - Fund wallet with USDC; see `fund` skill