FurlPay Docs
Open App
  • Services & Availability
  • Quickstart
  • For AI Agents
  • Monorepo
  • API Routes
  • Authenticationupdated
  • Webhook Eventsupdated
  • Error Codesupdated
  • Rate Limitsnew
  • Configuration & Setupnew
  • Merchant Paymentsnew
  • Payroll & Payoutsnew
  • Agentic Payments (x402)updated
  • Agent Trust & Mandates (TAP)updated
  • CCTP Cross-Chainupdated
  • LI.FI Swapsupdated
  • FurlPay Travels (Travel MCP)updated
  • Solana Actions & Blinks
  • Settlement Workspacenew
  • FURL Tokennew
  • Claude Connectorupdated
  • AI Assistants
  • Circlenew
  • Ramp Providersnew
  • Telegram Mini Appnew
  • Stripe Crypto
  • Persona KYC
  • Regulatory status
  • Screening & Casesnew
  • Security Postureupdated
  • Signing & WebAuthnupdated
  • Help Center
  • Getting Started
  • KYC Verification
  • Passkeys & Biometrics
  • Privacy & Data Protection
  • Transaction Statuses
  • Gasless Transfers
  • Deposits & Withdrawals
  • Managing Virtual Cards
  • Freezing & Unfreezing Cards
  • Declined Transactions
  • SDK & API Support
  • x402 Monetization Basics
  • Booking Travel
  • Travel Refunds & Cancellations

Resources

  • Changelog
  • System Status
  • OpenAPI Spec
  • Community
  • GitHub
Docs/Payments/Solana Actions & Blinks

Payments

Solana Actions & Blinks

Build a Solana Actions response that a compatible client can render as a signable payment widget — a Blink. The API can construct transaction data; the wallet holder reviews, signs and submits it.

Transaction construction is not settlement

A generated transaction is not proof of a confirmed payment or merchant order. Confirm the asset, amount, recipient and order status, then verify the chain result. FURL pricing is returned only when configured; do not assume it is an available payment asset.

Endpoints

MethodPathDescription
GET/actions.jsonDiscovery rules mapping /pay/* → the Action API
GET/api/actions/pay/[orderId]Blink metadata: icon, title, pay buttons
POST/api/actions/pay/[orderId]?asset=USDC|SOL|FURLBase64 transfer transaction to sign (FURL only when FURL pricing is configured)
OPTIONS/api/actions/*CORS preflight for Blink clients

Spec-correct by construction

These are the details most implementations get wrong — and Furlpay handles them:

  • Dollar-denominated amounts — the SOL path converts via a live SOL/USD price rather than charging "25 SOL" for a $25 order.
  • Idempotent merchant ATA creation — the first payment to a fresh token account doesn't fail.
  • transferChecked — validates mint + decimals on-chain, not a bare transfer.
  • Full header set — ACTIONS_CORS_HEADERS plus X-Action-Version and X-Blockchain-Ids (sRFC 31), and an OPTIONS handler so Blinks render.

Try it

bash
# metadata a Blink client reads to render the widget
curl https://furlpay.com/api/actions/pay/order_9f21

# then paste that URL into https://dial.to to render the Blink

Starter template

A standalone Next.js starter is open-sourced at github.com/FurlPay/furlpay-solana-actions-template — clone it to ship spec-correct Blinks in minutes.
Did this page help?
Edit this page on GitHub

← Previous

FurlPay Travels (Travel MCP)

Next →

Settlement Workspace