A Next.js-based Solana Actions and Blinks checkout template using TypeScript, React, and Solana
furlpay-solana-actions-template — Next.js Starter Template
By FurlPay
A Next.js-based Solana Actions and Blinks payment checkout template that provides shareable payment links which expand into signable payment components in X or Discord.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Actual screenshot captured by the server browser.
All pages & views 3
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
GET metadata uses type: "action" and includes headers such as ACTIONS_CORS_HEADERS, X-Action-Version, and X-Blockchain-Ids
Amounts are denominated in USD; the SOL payment path converts via the SOL/USD price rather than pricing directly by SOL quantity
Merchant ATA creation is idempotent, so the first payment to a new token account will not fail
Uses transferChecked to validate the mint and decimals on-chain, rather than transfer
When serializing the unsigned transaction it uses a placeholder blockhash, so serialization completes without a live RPC
Template Details
This template is FurlPay's open-source Solana Actions & Blinks checkout template, built with TypeScript, Next.js, React, and Solana. The README states it uses the same code as the shareable payment links on furlpay.com. It provides a Blink metadata endpoint and an endpoint that returns an unsigned transaction, and handles CORS preflight, Action version, and blockchain identifier headers. The README emphasizes the template's handling of specification details: GET metadata uses type: "action" and includes the full ACTIONS_CORS_HEADERS, X-Action-Version, and X-Blockchain-Ids (sRFC 31); amounts are denominated in USD, and the SOL path converts via the SOL/USD price; merchant ATA creation is idempotent; it uses transferChecked to validate the mint and decimals; and when serializing the unsigned transaction it uses a placeholder blockhash, requiring no live RPC. The template provides routes including /actions.json, GET /api/actions/pay/[orderId], POST /api/actions/pay/[orderId]?asset=USDC|SOL, and OPTIONS preflight. The README does not describe specific deployment methods beyond local running and pre-launch replacements, nor does it provide performance or production-environment validation information.
Is it right for your project?
Use Cases
- Share a payment link in X or Discord so the link expands into a signable payment component
- Set up a USD-denominated checkout flow that accepts USDC or SOL
- Use as a reference template for implementing the Solana Actions and Blinks specification
- Render and test the Blink payment flow locally via dial.to
Suitable For
- Developers who need a Solana Actions and Blinks payment checkout template
- Merchant integration scenarios that want USD-denominated pricing with USDC or SOL payment support
- Solana developers who need a reference for sRFC 31 headers and CORS handling
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
Run npm install to install dependencies, then run npm run dev to start the development server
- 2
Use http://localhost:3000/api/actions/pay/demo_order in dial.to to render the Blink
- 3
Before launch, set MERCHANT_SOLANA_WALLET to your receiving wallet; see .env.example
- 4
Replace getOrder() in lib/solana.ts with real order lookup logic
- 5
Replace SOLANA_SOL_USD_PRICE with a live price source (such as Pyth), and register the deployed URL in the Dialect registry
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis listing covers the free version in the public repository under the MIT license; the free scope is the code of that version and does not mean external services or third-party assets are free.
Must comply with when using
- Permits free use, modification, commercial use, and distribution of that version's code.
- When distributing copies or substantial portions of the code, retain the original author's copyright notice and the full MIT license notice.
- The code is provided as-is; warranties and limitations of liability are governed by the original license and applicable law.
Additional costs & items to verify
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
- Before launch, the MERCHANT_SOLANA_WALLET environment variable must be set to your own receiving wallet address, otherwise payments cannot be received correctly.
- getOrder() in lib/solana.ts must be replaced with real order lookup logic; the template's default implementation cannot be used directly for production orders.
- SOL USD pricing depends on SOLANA_SOL_USD_PRICE; before launch it must be replaced with a live price source (such as Pyth), otherwise prices may be inaccurate.
- The deployed URL must be registered in the Dialect registry so wallets render the Blink as a trusted source.
- Local Blink testing requires rendering via the third-party service dial.to, depending on an external platform.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
1. Set `MERCHANT_SOLANA_WALLET` to your treasury (see `.env.example`)
Original README
2. Replace `getOrder()` in `lib/solana.ts` with your real order lookup
Original README
3. Replace `SOLANA_SOL_USD_PRICE` with a live oracle (e.g. Pyth)
Original README
4. Register your deployed URL with the [Dialect registry](https://dial.to/register)
Original README
https://github.com/FurlPay/furlpay-solana-actions-template/blob/main/LICENSEhttps://github.com/FurlPay/furlpay-solana-actions-template/blob/main/README.mdThen render your Blink at [dial.to](https://dial.to) with
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-14. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 80 / 100
- Technologies
- Next.js · React
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-13
- Screenshot last checked
- 2026-10-14
A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.
The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Review declaration: codex-user-requested-batch-review-20261015 · 2026-10-15
Inspect the recorded source material
SHA-256: 74e07fd50c6a30376bbb0205e97984d24529aa7b0f655dfbca6b2aa9a7b93b94
2026-10-14T22:26:36.040Z
Source file / repository# Furlpay Solana Actions Template     [](./LICENSE) A production-ready **Solana Actions & Blinks** checkout template built on Next.js — the same code that powers [furlpay.com](https://furlpay.com)'s shareable payment links. Post a link on X or Discord and it unfurls into a signable payment widget. ## What's spec-correct here (and often wrong elsewhere) - ✅ `type: "action"` on GET metadata, `OPTIONS` preflight, and the full `ACTIONS_CORS_HEADERS` + `X-Action-Version` + `X-Blockchain-Ids` header set (sRFC 31) - ✅ **Dollar-denominated amounts** — the SOL path converts via a SOL/USD price instead of charging "25 SOL" for a $25 order - ✅ **Idempotent merchant ATA creation** — first payment to a fresh token account doesn't fail - ✅ `transferChecked` (validates mint + decimals on-chain) instead of `transfer` - ✅ No live RPC needed to serialize: unsigned transactions use a placeholder blockhash that Blink clients replace per spec ## Run it ```bash npm install npm run dev ``` Then render your Blink at [dial.to](https://dial.to) with `http://localhost:3000/api/actions/pay/demo_order`. ## Endpoints | Route | Purpose | |---|---| | `GET /actions.json` | Maps site paths to Action API endpoints | | `GET /api/actions/pay/[orderId]` | Blink metadata: icon, title, pay buttons | | `POST /api/actions/pay/[orderId]?asset=USDC\|SOL` | Returns the base64 transaction to sign | | `OPTIONS ...` | CORS preflight for Blink clients | ## Going to production 1. Set `MERCHANT_SOLANA_WALLET` to your treasury (see `.env.example`) 2. Replace `getOrder()` in `lib/solana.ts` with your real order lookup 3. Replace `SOLANA_SOL_USD_PRICE` with a live oracle (e.g. Pyth) 4. Register your deployed URL with the [Dialect registry](https://dial.to/register) so wallets render your Blinks as trusted ## License MIT
Explore similar templates
Compare previews and descriptions within the same stack and category.

Next.js SaaS Starter
The official Next.js SaaS starter template, integrating email/password authentication, Stripe Checkout subscriptions, a dashboard with user/team CRUD, basic Owner/Member RBAC, and activity logging.
Next.js · SaaS

Next.js Commerce
Vercel's officially maintained Next.js App Router ecommerce starter with deep Shopify integration, offering a complete product catalog, cart, and checkout flow. Core logic is modular for swapping backends, and community provider versions exist for BigCommerce, Medusa, and Saleor.
Next.js · E-commerce

Next-js-Boilerplate
A developer-first Next.js 16 starter with Tailwind CSS 4 and TypeScript, supporting both App Router and Page Router.
Next.js · Starter

tailwind-nextjs-starter-blog
A Next.js and Tailwind CSS blog starter template using Contentlayer for Markdown/MDX, with built-in SEO, code highlighting, and tags. It targets personal technical blogs and migration from Jekyll/Hugo to React, and supports one-click Vercel deployment.
Next.js · Blog

next-forge
next-forge is a Turborepo-based Next.js template maintained by Vercel, positioned as a starting point for SaaS products.
Next.js · Starter

SaaS-Boilerplate
SaaS-Boilerplate is an open-source SaaS starter template built with Next.js App Router, React 19, TypeScript, Tailwind CSS, and Shadcn UI.
Next.js · SaaS
