Payment Links

Create, manage, and track payment links for accepting crypto payments

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.

Info

Payment links automatically handle token routing, gas abstraction, and cross-chain swaps via the AnySpend protocol.

id string

Unique identifier for the payment link (e.g., pl_abc123).

name string

Display name shown to the customer during checkout.

url string

The shareable checkout URL (e.g., https://anyspend.com/pay/pl_abc123).

short_url string

Shortened URL for sharing (e.g., https://as.pay/abc123).

The token contract address you want to receive payment in.

chain_id number

The chain ID where you want to receive payment.

The wallet address that receives the payment.

amount string | null

Fixed payment amount in the token's smallest unit. Null for variable-amount links.

min_amount string | null

Minimum allowed amount for variable-amount links.

max_amount string | null

Maximum allowed amount for variable-amount links.

suggested_amount string | null

Pre-filled suggested amount for variable-amount links.

description string | null

Description shown on the checkout page.

product_id string | null

Associated product ID, if linked to a product.

image_url string | null

Image displayed on the checkout page.

theme_color string | null

Hex color code for checkout page branding (e.g., #6366f1).

button_text string | null

Custom text for the pay button (default: "Pay").

max_uses number | null

Maximum number of completed payments allowed. Null for unlimited.

uses number

Number of completed payments so far.

expires_at string | null

ISO 8601 expiration timestamp. Null for no expiration.

active boolean

Whether the link is currently accepting payments.

form_schema object | null

Custom form fields to collect from the customer during checkout.

shipping_options array | null

Available shipping options for physical goods.

Whether to collect a shipping address during checkout.

return_url string | null

URL to redirect the customer to after payment.

return_label string | null

Label for the return button (e.g., "Back to Store").

branding object | null

Custom branding configuration.

fee_on_top boolean

Whether the platform fee is added on top of the payment amount (true) or absorbed by the merchant (false).

items array

Line items attached to this payment link.

created_at string

ISO 8601 creation timestamp.

updated_at string

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.

ParameterDescriptionExample
client_reference_idYour internal reference ID (order ID, user ID, etc.)?client_reference_id=order_123
metadata[key]Arbitrary key-value metadata (bracket notation, up to 50 keys)?metadata[user_id]=clerk_abc&metadata[plan]=pro
session_idUse a pre-created checkout session instead of creating a new one?session_id=cs_abc123
success_urlOverride the redirect URL after successful payment?success_url=https://example.com/thanks
cancel_urlOverride the cancel/back URL?cancel_url=https://example.com/cart
utm_sourceUTM source for attribution?utm_source=twitter
utm_mediumUTM medium for attribution?utm_medium=social
utm_campaignUTM campaign for attribution?utm_campaign=launch

Metadata limits

  • Maximum 50 keys per session
  • Key length: up to 40 characters
  • Value length: up to 500 characters

Example: associating payments with your customers

text
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.

Tip

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.


search string

Search payment links by name or description.

active boolean

Filter by active status. Omit to return all links.

sort string default: created_at

Sort field. One of: created_at, updated_at, name, uses.

order string default: desc

Sort order. One of: asc, desc.

page number default: 1

Page number for pagination.

limit number default: 20

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"
json
{ "data": [ { "id": "pl_abc123", "name": "Premium Plan", "url": "https://anyspend.com/pay/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 new payment link with customizable checkout experience.

name string required

Display name for the payment link.

token_address string required

Contract address of the token you want to receive.

chain_id number required

Chain ID where you want to receive the token.

recipient_address string required

Wallet address that receives the payment.

Description displayed on the checkout page.

amount string

Fixed payment amount in the token's smallest unit. Omit for variable-amount links.

min_amount string

Minimum amount for variable-amount links.

max_amount string

Maximum amount for variable-amount links.

Pre-filled amount for variable-amount links.

product_id string

Link to an existing product.

image_url string

URL of the image to display on the checkout page.

Hex color code for checkout branding (e.g., "#6366f1").

Custom pay button text.

max_uses number

Maximum number of completed payments. Omit for unlimited.

expires_at string

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.

collect_shipping_address boolean default: false

Whether to collect a shipping address.

return_url string

URL to redirect the customer after payment.

Label for the return button.

branding object

Custom branding configuration. See the Payment Link object above for structure.

fee_on_top boolean default: false

Add platform fee on top of the payment amount.

items array

Line items to display on checkout.

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
      }
    ]
  }'
json
{ "id": "pl_abc123", "name": "Premium Plan", "url": "https://anyspend.com/pay/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" }

Fetch a single payment link by ID, including its line items.

id string required

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"

Returns the full Payment Link object including items.


Update an existing payment link. Only the fields you include in the request body will be updated.

id string required

The payment link ID.

All body parameters from the create endpoint are accepted. Additionally:

active boolean

Set to false to deactivate the link.

Warning

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"
  }'

Returns the updated Payment Link object.


Permanently delete a payment link. This cannot be undone. Active checkout sessions for this link will fail.

id string required

The payment link ID.

curl -X DELETE "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123" \
  -H "Authorization: Bearer asp_xxx"
json
{ "id": "pl_abc123", "deleted": true }

Retrieve analytics and conversion metrics for a specific payment link.

id string required

The payment link ID.

curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/stats" \
  -H "Authorization: Bearer asp_xxx"
json
{ "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 } } } }

Retrieve checkout sessions associated with a specific payment link.

id string required

The payment link ID.

status string

Filter by session status: open, processing, completed, expired, failed.

page number default: 1

Page number.

limit number default: 20

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"
json
{ "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 } }

Retrieve visitor analytics for a specific payment link, including referrer and geographic data.

id string required

The payment link ID.

page number default: 1

Page number.

limit number default: 20

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"
json
{ "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 } }

Create a copy of an existing payment link with optional field overrides.

id string required

The payment link ID to duplicate.

name string

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"
  }'

Returns a new Payment Link object with a new ID.


List line items

Retrieve all line items attached to a payment link.

id string required

The payment link ID.

curl -X GET "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/items" \
  -H "Authorization: Bearer asp_xxx"
json
{ "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.

id string required

The payment link ID.

name string required

Item name.

amount string required

Item price in the token's smallest unit.

quantity number required

Quantity.

image_url string

Item image URL.

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
  }'
json
{ "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.

id string required

The payment link ID.

itemId string required

The line item ID.

curl -X DELETE "https://platform-api.anyspend.com/api/v1/payment-links/pl_abc123/items/pli_item002" \
  -H "Authorization: Bearer asp_xxx"
json
{ "id": "pli_item002", "deleted": true }
Ask a question... ⌘I