Payment links are shareable URLs that allow your customers to pay with any token on any supported chain. Each link can be customized with branding, forms, shipping options, and more.
Payment links automatically handle token routing, gas abstraction, and cross-chain swaps via the AnySpend protocol.
The Payment Link object
Unique identifier for the payment link (e.g., pl_abc123).
Display name shown to the customer during checkout.
The shareable checkout URL (e.g., https://pay.anyspend.com/pl_abc123).
Shortened URL for sharing (e.g., https://as.pay/abc123).
The token contract address you want to receive payment in.
The chain ID where you want to receive payment.
The wallet address that receives the payment.
Fixed payment amount in the token’s smallest unit. Null for variable-amount links.
Minimum allowed amount for variable-amount links.
Maximum allowed amount for variable-amount links.
Pre-filled suggested amount for variable-amount links.
Description shown on the checkout page.
Associated product ID, if linked to a product.
Image displayed on the checkout page.
Hex color code for checkout page branding (e.g., #6366f1).
Custom text for the pay button (default: "Pay").
Maximum number of completed payments allowed. Null for unlimited.
Number of completed payments so far.
ISO 8601 expiration timestamp. Null for no expiration.
Whether the link is currently accepting payments.
Custom form fields to collect from the customer during checkout. Show form_schema properties
Array of form field definitions. Field type: text, email, phone, select, textarea, number, checkbox.
Whether the field is required.
Options for select fields.
Available shipping options for physical goods. Show shipping option properties
Unique shipping option identifier.
Display name (e.g., "Standard Shipping").
Shipping cost in the token’s smallest unit.
Estimated delivery time (e.g., "5-7 business days").
Whether to collect a shipping address during checkout.
URL to redirect the customer to after payment.
Label for the return button (e.g., "Back to Store").
Custom branding configuration. Business name displayed on checkout.
Whether the platform fee is added on top of the payment amount (true) or absorbed by the merchant (false).
Line items attached to this payment link.
ISO 8601 creation timestamp.
ISO 8601 last update timestamp.
URL parameters
When sharing a payment link URL, you can append query parameters to pre-fill session data, track attribution, and associate payments with your customers.
Parameter Description Example client_reference_idYour internal reference ID (order ID, user ID, etc.) ?client_reference_id=order_123metadata[key]Arbitrary key-value metadata (bracket notation, up to 50 keys) ?metadata[user_id]=clerk_abc&metadata[plan]=prosession_idUse a pre-created checkout session instead of creating a new one ?session_id=cs_abc123success_urlOverride the redirect URL after successful payment ?success_url=https://example.com/thankscancel_urlOverride the cancel/back URL ?cancel_url=https://example.com/cartutm_sourceUTM source for attribution ?utm_source=twitterutm_mediumUTM medium for attribution ?utm_medium=socialutm_campaignUTM campaign for attribution ?utm_campaign=launch
Maximum 50 keys per session
Key length: up to 40 characters
Value length: up to 500 characters
Example: associating payments with your customers
https://anyspend.com/pay/abc123?client_reference_id=order_456&metadata[user_id]=clerk_abc&metadata[plan]=pro
All parameters are passed through to webhooks, so you can reconcile payments on your backend.
For enterprise integrations that need full control, use the Checkout Sessions API to create sessions server-side with customer_email, customer_name, metadata, and client_reference_id, then redirect using the returned url or append ?session_id= to your payment link.
List payment links
Search payment links by name or description.
Filter by active status. Omit to return all links.
sort
string
default: "created_at"
Sort field. One of: created_at, updated_at, name, uses.
Sort order. One of: asc, desc.
Page number for pagination.
Number of results per page (max 100).
curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links?active=true&sort=created_at&order=desc&page=1&limit=20" \
-H "Authorization: Bearer asp_xxx"
{
"data" : [
{
"id" : "pl_abc123" ,
"name" : "Premium Plan" ,
"url" : "https://pay.anyspend.com/pl_abc123" ,
"short_url" : "https://as.pay/abc123" ,
"token_address" : "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" ,
"chain_id" : 1 ,
"recipient_address" : "0x1234...abcd" ,
"amount" : "50000000" ,
"description" : "Premium monthly subscription" ,
"active" : true ,
"uses" : 42 ,
"max_uses" : null ,
"expires_at" : null ,
"created_at" : "2026-01-15T10:30:00Z" ,
"updated_at" : "2026-02-20T14:22:00Z"
}
],
"pagination" : {
"page" : 1 ,
"limit" : 20 ,
"total" : 1 ,
"total_pages" : 1 ,
"has_more" : false
}
}
Create a payment link
Create a new payment link with customizable checkout experience.
Display name for the payment link.
Contract address of the token you want to receive.
Chain ID where you want to receive the token.
Wallet address that receives the payment.
Description displayed on the checkout page.
Fixed payment amount in the token’s smallest unit. Omit for variable-amount links.
Minimum amount for variable-amount links.
Maximum amount for variable-amount links.
Pre-filled amount for variable-amount links.
Link to an existing product.
URL of the image to display on the checkout page.
Hex color code for checkout branding (e.g., "#6366f1").
Maximum number of completed payments. Omit for unlimited.
ISO 8601 expiration timestamp.
Custom form fields to collect during checkout. See the Payment Link object above for structure.
Shipping options for physical goods. See the Payment Link object above for structure.
Whether to collect a shipping address.
URL to redirect the customer after payment.
Label for the return button.
Custom branding configuration. See the Payment Link object above for structure.
Add platform fee on top of the payment amount.
Line items to display on checkout. Item price in the token’s smallest unit.
curl -X POST "https://platform-api.anyspend.com/api/v1/payment-links" \
-H "Authorization: Bearer asp_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Premium Plan",
"token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"chain_id": 1,
"recipient_address": "0x1234567890abcdef1234567890abcdef12345678",
"amount": "50000000",
"description": "Premium monthly subscription",
"image_url": "https://example.com/premium.png",
"theme_color": "#6366f1",
"button_text": "Subscribe Now",
"return_url": "https://example.com/thank-you",
"return_label": "Back to Dashboard",
"form_schema": {
"fields": [
{
"id": "company_name",
"type": "text",
"label": "Company Name",
"required": true,
"placeholder": "Acme Inc."
},
{
"id": "team_size",
"type": "select",
"label": "Team Size",
"required": true,
"options": ["1-10", "11-50", "51-200", "200+"]
}
]
},
"items": [
{
"name": "Premium Plan - Monthly",
"amount": "50000000",
"quantity": 1
}
]
}'
{
"id" : "pl_abc123" ,
"name" : "Premium Plan" ,
"url" : "https://pay.anyspend.com/pl_abc123" ,
"short_url" : "https://as.pay/abc123" ,
"token_address" : "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" ,
"chain_id" : 1 ,
"recipient_address" : "0x1234567890abcdef1234567890abcdef12345678" ,
"amount" : "50000000" ,
"min_amount" : null ,
"max_amount" : null ,
"suggested_amount" : null ,
"description" : "Premium monthly subscription" ,
"product_id" : null ,
"image_url" : "https://example.com/premium.png" ,
"theme_color" : "#6366f1" ,
"button_text" : "Subscribe Now" ,
"max_uses" : null ,
"uses" : 0 ,
"expires_at" : null ,
"active" : true ,
"form_schema" : {
"fields" : [
{
"id" : "company_name" ,
"type" : "text" ,
"label" : "Company Name" ,
"required" : true ,
"placeholder" : "Acme Inc."
},
{
"id" : "team_size" ,
"type" : "select" ,
"label" : "Team Size" ,
"required" : true ,
"options" : [ "1-10" , "11-50" , "51-200" , "200+" ]
}
]
},
"shipping_options" : null ,
"collect_shipping_address" : false ,
"return_url" : "https://example.com/thank-you" ,
"return_label" : "Back to Dashboard" ,
"branding" : null ,
"fee_on_top" : false ,
"items" : [
{
"id" : "pli_item001" ,
"name" : "Premium Plan - Monthly" ,
"amount" : "50000000" ,
"quantity" : 1 ,
"image_url" : null
}
],
"created_at" : "2026-02-27T10:30:00Z" ,
"updated_at" : "2026-02-27T10:30:00Z"
}
Retrieve a payment link
Fetch a single payment link by ID, including its line items.
The payment link ID (e.g., pl_abc123).
curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123" \
-H "Authorization: Bearer asp_xxx"
Update a payment link
Update an existing payment link. Only the fields you include in the request body will be updated.
All body parameters from the create endpoint are accepted. Additionally:
Set to false to deactivate the link.
Changing token_address, chain_id, or recipient_address on a link that has existing sessions may cause inconsistencies. Create a new link instead if you need to change payment routing.
curl -X PATCH "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123" \
-H "Authorization: Bearer asp_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Premium Plan (Updated)",
"amount": "75000000",
"button_text": "Upgrade Now"
}'
Delete a payment link
Permanently delete a payment link. This cannot be undone. Active checkout sessions for this link will fail.
curl -X DELETE "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123" \
-H "Authorization: Bearer asp_xxx"
{
"id" : "pl_abc123" ,
"deleted" : true
}
Get payment link stats
Retrieve analytics and conversion metrics for a specific payment link.
curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/stats" \
-H "Authorization: Bearer asp_xxx"
{
"payment_link_id" : "pl_abc123" ,
"views" : 1250 ,
"sessions" : 340 ,
"completed" : 42 ,
"conversion_rate" : 0.1235 ,
"total_volume" : "2100000000" ,
"utm_breakdown" : {
"sources" : {
"twitter" : { "views" : 500 , "sessions" : 120 , "completed" : 18 },
"email" : { "views" : 400 , "sessions" : 150 , "completed" : 20 },
"direct" : { "views" : 350 , "sessions" : 70 , "completed" : 4 }
},
"mediums" : {
"social" : { "views" : 500 , "sessions" : 120 , "completed" : 18 },
"newsletter" : { "views" : 400 , "sessions" : 150 , "completed" : 20 },
"none" : { "views" : 350 , "sessions" : 70 , "completed" : 4 }
},
"campaigns" : {
"launch_feb_2026" : { "views" : 600 , "sessions" : 200 , "completed" : 30 },
"none" : { "views" : 650 , "sessions" : 140 , "completed" : 12 }
}
}
}
List payment link sessions
Retrieve checkout sessions associated with a specific payment link.
Filter by session status: open, processing, completed, expired, failed.
Results per page (max 100).
curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/sessions?status=completed&page=1&limit=10" \
-H "Authorization: Bearer asp_xxx"
{
"data" : [
{
"id" : "cs_sess001" ,
"payment_link_id" : "pl_abc123" ,
"status" : "completed" ,
"amount" : "50000000" ,
"token_address" : "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48" ,
"chain_id" : 1 ,
"payer_address" : "0xaabb...ccdd" ,
"tx_hash" : "0x9f8e...1a2b" ,
"form_data" : {
"company_name" : "Acme Inc." ,
"team_size" : "11-50"
},
"created_at" : "2026-02-25T08:15:00Z" ,
"completed_at" : "2026-02-25T08:16:30Z"
}
],
"pagination" : {
"page" : 1 ,
"limit" : 10 ,
"total" : 42 ,
"total_pages" : 5 ,
"has_more" : true
}
}
List payment link visitors
Retrieve visitor analytics for a specific payment link, including referrer and geographic data.
Results per page (max 100).
curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/visitors?page=1&limit=20" \
-H "Authorization: Bearer asp_xxx"
{
"data" : [
{
"id" : "vis_001" ,
"payment_link_id" : "pl_abc123" ,
"ip_country" : "US" ,
"referrer" : "https://twitter.com" ,
"user_agent" : "Mozilla/5.0 ..." ,
"utm_source" : "twitter" ,
"utm_medium" : "social" ,
"utm_campaign" : "launch_feb_2026" ,
"started_session" : true ,
"visited_at" : "2026-02-25T08:10:00Z"
}
],
"pagination" : {
"page" : 1 ,
"limit" : 20 ,
"total" : 1250 ,
"total_pages" : 63 ,
"has_more" : true
}
}
Duplicate a payment link
Create a copy of an existing payment link with optional field overrides.
The payment link ID to duplicate.
Override the name of the duplicated link. Defaults to "Copy of {original name}".
Any other fields from the create endpoint can be passed as overrides.
curl -X POST "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/duplicate" \
-H "Authorization: Bearer asp_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Premium Plan - EU",
"recipient_address": "0xabcdef1234567890abcdef1234567890abcdef12"
}'
List line items
Retrieve all line items attached to a payment link.
curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/items" \
-H "Authorization: Bearer asp_xxx"
{
"data" : [
{
"id" : "pli_item001" ,
"payment_link_id" : "pl_abc123" ,
"name" : "Premium Plan - Monthly" ,
"amount" : "50000000" ,
"quantity" : 1 ,
"image_url" : null ,
"created_at" : "2026-02-27T10:30:00Z"
}
]
}
Add a line item
Add a new line item to an existing payment link.
Item price in the token’s smallest unit.
curl -X POST "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/items" \
-H "Authorization: Bearer asp_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "Add-on: Priority Support",
"amount": "10000000",
"quantity": 1
}'
{
"id" : "pli_item002" ,
"payment_link_id" : "pl_abc123" ,
"name" : "Add-on: Priority Support" ,
"amount" : "10000000" ,
"quantity" : 1 ,
"image_url" : null ,
"created_at" : "2026-02-27T11:00:00Z"
}
Remove a line item
Remove a line item from a payment link.
curl -X DELETE "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/items/pli_item002" \
-H "Authorization: Bearer asp_xxx"
{
"id" : "pli_item002" ,
"deleted" : true
}