Quick Pay
Create payment links instantly without authentication
Quick Pay is a single endpoint that lets you create a payment link without requiring an API key. It is designed for rapid prototyping, one-off invoices, tip jars, and donation pages where the overhead of creating an organization and managing API keys is unnecessary.
Quick Pay is rate limited to 5 requests per minute per IP address. For higher throughput or access to analytics, webhooks, and custom forms, create an organization and use an API key.
Endpoint
textPOST /api/v1/quick-pay
No Authorization header is required.
Request Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
recipient_address | string | Yes | -- | Ethereum address that will receive the payment |
amount | string | No | -- | Token amount in the smallest unit (e.g. "1000000" for 1 USDC) |
token_address | string | No | USDC on Base | ERC-20 token contract address |
chain_id | number | No | 8453 (Base) | Target chain ID |
name | string | No | -- | Human-readable name for the link |
description | string | No | -- | Description shown to the payer |
expires_in | number | No | 86400 (24 h) | Seconds until the link expires. Maximum is 86400. |
Response
A successful request returns a full PaymentLink object:
json{ "id": "pl_abc123", "url": "https://anyspend.com/pay/pl_abc123", "recipient_address": "0x1234...abcd", "amount": "1000000", "token_address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "chain_id": 8453, "name": "Coffee tip", "description": null, "status": "active", "expires_at": "2025-06-02T12:00:00Z", "created_at": "2025-06-01T12:00:00Z", "org_id": "anonymous"}
Share the url with anyone -- they can pay from any wallet on any supported chain and the funds will be routed to the recipient via AnySpend.
Examples
bashcurl -X POST https://platform-api.anyspend.com/api/v1/quick-pay \ -H "Content-Type: application/json" \ -d '{ "recipient_address": "0x1234567890abcdef1234567890abcdef12345678", "amount": "5000000", "name": "Buy me a coffee", "description": "Thanks for the help!" }'
typescriptimport { AnySpendPlatformClient } from "@b3dotfun/sdk/anyspend/platform";// quickPay is a static method -- no API key neededconst link = await AnySpendPlatformClient.quickPay({ recipient_address: "0x1234567890abcdef1234567890abcdef12345678", amount: "5000000", // 5 USDC name: "Buy me a coffee", description: "Thanks for the help!",});console.log(link.url);// => https://anyspend.com/pay/pl_abc123
pythonimport requestsresp = requests.post( "https://platform-api.anyspend.com/api/v1/quick-pay", json={ "recipient_address": "0x1234567890abcdef1234567890abcdef12345678", "amount": "5000000", "name": "Buy me a coffee", },)link = resp.json()print(link["url"])
Use Cases
Limitations
Quick Pay links are intentionally limited. If you need any of the features below, create an organization and use authenticated endpoints.
| Feature | Quick Pay | Authenticated API |
|---|---|---|
| Analytics & visitor tracking | No | Yes |
| Webhook notifications | No | Yes |
| Custom checkout forms | No | Yes |
| Shipping options & discount codes | No | Yes |
| Custom expiry (> 24 h) | No | Yes |
| Link editing after creation | No | Yes |
| Organization branding | No | Yes |
| Rate limit | 5 req/min/IP | 100 req/min/key |
Error Responses
| Status | Code | Description |
|---|---|---|
400 | invalid_request | Missing recipient_address or invalid parameter |
422 | invalid_address | recipient_address is not a valid Ethereum address |
429 | rate_limit_exceeded | More than 5 requests in the current minute window |
json{ "error": { "code": "rate_limit_exceeded", "message": "Rate limit exceeded. Try again in 45 seconds.", "retry_after": 45 }}

