Core APIs

Payment Links

Persistent URLs your customers can pay through. Create once, share anywhere — email, invoice, SMS, social bio. Each visit spins up a fresh session.

When to use links

  • Freelancer invoices — one URL per client, share by email
  • Social bio links — replace tip jars, buy-me-a-coffee, ko-fi
  • Recurring buyers — regulars pay via the same URL every time
  • Donations — leave amount blank so supporters pick their own
  • Single-use invoices — enable single-use to auto-close after payment

Creating links

Payment Links are created and managed in your Dashboard → Payment Links. No API required — most merchants never touch code.

🔗 Open the dashboard

Log in, click "Payment Links" in the sidebar, hit "+ New link".

Manage links →

Anatomy of a link

FieldDescription
titlePublic-facing name. Shown to customers on the checkout page.
descriptionOptional short blurb.
amountFixed amount, or leave blank for customer-picked (donation style).
currencyUSD, EUR, GBP, NGN, etc.
accepted_currenciesWhich cryptos the customer can pay with.
single_useIf true, auto-pauses after first payment.
is_activeSet to false to temporarily disable the link.

Public URL structure

https://blockcade.app/pay/link/{slug}/

The slug is a short random string generated automatically. Custom slugs are coming.

Passing an amount in the URL (donation-style links)

https://blockcade.app/pay/link/{slug}/?amount=25

Skips the amount prompt and takes the customer straight to checkout.

Pre-filling the customer email

https://blockcade.app/pay/link/{slug}/?email=buyer@example.com

Webhooks on link payments

Payments made through a link fire the same payment.succeeded event. The metadata object includes:

{
  "created_via": "payment_link",
  "link_id":     "uuid-of-the-link",
  "title":       "Consulting hour"
}

Analytics

Each link shows its times_used count in the dashboard. Detailed per-link analytics (revenue, geographic breakdown, referrers) are coming.

API (v23+)

Payment links can now be managed programmatically. All endpoints require Authorization: Bearer <api-key>.

MethodPathPurpose
POST/gateway/api/links/Create a link
GET/gateway/api/links/List (paginated: ?limit=&cursor=)
GET/gateway/api/links/<slug>/Retrieve
PATCH/gateway/api/links/<slug>/Update
DELETE/gateway/api/links/<slug>/Deactivate (soft delete)

Create example

curl -X POST https://blockcade.app/gateway/api/links/ \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: my-unique-key" \
  -d '{
    "title": "Consulting hour",
    "amount": 150,
    "currency": "USD",
    "accepted_currencies": ["USDC","USDT"],
    "single_use": false
  }'

Node.js SDK

const link = await bc.paymentLinks.create({
  title: 'Consulting hour', amount: 150, currency: 'USD',
});
console.log(link.url);
// Later:
await bc.paymentLinks.update(link.slug, { amount: 175 });
await bc.paymentLinks.cancel(link.slug);