Skip to content
Abstract rails merging: Stripe and Solana flows converging into one checkout.
Stripe + Solana x402

Add crypto to your store without building crypto.

One React component for Stripe and Stablecoins. Uses your existing products. No deposit wallets. No monitoring. No custom crypto backend.

View on GitHubSee it run
🎯One component
No deposit wallets
🧱Works with your product IDs
🔓MIT licensed
Traditional Solana payments
// 😰 Traditional Solana payments

// Create deposit wallet per user
const wallet = generateDepositWallet(userId);

// Monitor deposits 24/7
const monitor = watchWallet(wallet.address);

// Sweep to merchant on deposit
monitor.onDeposit(() => sweepToMerchant());

// Sync wallet state with DB
await syncWalletBalance(userId, wallet);

// Verify payment
await verifyPayment(txId, amount, user);

// Add Stripe separately
// ... another 100 lines ...

// Result: 3-8 weeks, custody risk
Cedros Pay
// 😎 Cedros Pay

import { CedrosPay } from '@cedros/pay-react';

export function Checkout() {
  return (
    <CedrosPay
      resource="your-product-id" // from your DB
      onPaymentSuccess={(txId) => unlockContent(txId)}
    />
  );
}

// Done. Stripe and Solana in one checkout.
// Setup time: ~15 minutes.

React SDK + Go server. Works with your Stripe account and Solana wallet. No deposit wallets. No user accounts required for crypto. Verify on-chain, fulfill instantly.

The Problem

Why Solana payments take months instead of minutes.

Everything before Cedros Pay required wallets per user, background monitors, and sweeping funds. Now it’s stateless.

Tangled nodes and lines representing complex payment infrastructure

Without Cedros Pay

  • Create a deposit wallet per user
  • Monitor deposits 24/7
  • Sweep to your merchant wallet
  • Store wallet state in your DB
  • Handle wallet creation failures
  • Build Stripe separately
  • Maintain two systems
Clean single path from customer to merchant

With Cedros Pay

  • Use your existing product IDs
  • Drop in <CedrosPay />
  • Funds go directly to your wallet
  • Backend only verifies the transaction
  • Stripe included automatically
  • No wallet infra to secure

Time

3–8 weeks

~15 minutes

Risk

Custody risk

Lower custody risk

Cost

More DevOps

Less DevOps

x402

x402 makes Solana payments stateless.

The client includes a signed transaction. Your backend verifies it, unlocks the resource, and never stores wallet state.

Signed transaction request
POST /api/premium
X-PAYMENT: <signed-transaction>

// Backend verifies:
1) transaction is confirmed on-chain
2) amount and recipient match
3) unlock the resource
  • No deposit wallets
  • No sweeping funds
  • No payment state in your DB
Diagram showing direct merchant settlement via signed transaction verification.

Traditional

  • User → Deposit wallet (you manage)
  • Monitor → Sweep → Merchant wallet
  • Store wallet state in your DB
  • Custody risk the entire way

x402

  • User → Signs transaction
  • Your backend verifies on-chain
  • Funds go directly to merchant
  • Stateless. No custody risk.
Features

Everything a production checkout needs.

Drop in the React component, verify transactions on your backend, and let Cedros Pay keep cards and stablecoins in sync.

Two rails merging into one checkout card.

One component, two rails

Stripe for cards, Solana USDC for wallets. No second checkout.

<CedrosPay resource="product-1" />
Document with database key tag.

Works with your products

Pass your DB ID. No new schema or product sync.

<CedrosPay resource="existing-product-123" />
Shopping cart with coupon ticket.

Real ecommerce

Carts, coupons, refunds, and fulfillment hooks.

<CedrosPay items={[{ resource: "item-1", quantity: 2 }]} couponCode="LAUNCH50" />
Wallet radar illustration.

Auto-detects wallet

No wallet: card only. Wallet: card and crypto options.

// Phantom user sees card + crypto buttons
Abstract agent head with checkmark.

Agent-ready

x402 over HTTP so agents can pay per request.

GET /api/premium
X-PAYMENT: <signed-transaction>
Server cube with wrench icon.

Self-host or extend

React UI + Go backend. Open API for custom wallets.

<CedrosPay resource="item" wallets={customWallets} />
Live Demo

See Cedros Pay run in wallet + no-wallet states.

Connect a wallet, flip through presets, and inspect the code that powers each state.

Live payments · Real transactionsWallet state: Disconnected

💡 The button above toggles whether the crypto payment option appears. To connect an actual wallet, click "Pay with USDC" below.

No wallet connected. Shows the Stripe fallback state.

Resource

The Cedros Guide to Generational Wealth Ebook

Card only
Ebook Guide$1

Example code

Integration

If you can wrap a provider, you can ship dual payments.

Install, wrap, drop in. Cedros Pay stays aligned with your product IDs the whole way.

Package box with download arrow10s

Install the SDK

Grab the React package and optional styles.

Install the SDK
npm install @cedros/pay-react
Sliders panel / config gear2m

Wrap the provider

Point to your Go server or self-hosted backend.

Wrap the provider
import { CedrosProvider } from "@cedros/pay-react";
import "@cedros/pay-react/style.css";

<CedrosProvider
  stripePublicKey="pk_test_..."
  serverUrl="https://your-api.com"
  solanaCluster="mainnet-beta"
>
  <App />
</CedrosProvider>;
Component tile being snapped into place30s

Render the component

Fulfill on success using your existing product IDs.

Render the component
import { CedrosPay } from "@cedros/pay-react";

<CedrosPay
  resource="your-product-id"
  onPaymentSuccess={(txId) => fulfillOrder(txId)}
/>;

Backend options: run the Go server we ship, or implement the open API with your own infra.

Use Cases

Built for modern commerce.

Paywalled content, agent APIs, digital products, and SaaS bundles all share the same `<CedrosPay />` component.

Document tile behind a small lock

Paywalled content

Instant access on payment. No account creation.

<CedrosPay resource={articleId} onPaymentSuccess={() => showContent()} />
Robot head with a request tile

AI agent APIs

Agents pay per request. No prepaid credits.

GET /api/generate-code
X-PAYMENT: <signed-transaction>
Download arrow over product tile

Digital products

Payment triggers a secure download link.

<CedrosPay resource={productId} onPaymentSuccess={(txId) => generateDownload()} />
Stacked blocks / seats

SaaS and bundles

Plans, seats, bundles, and refunds out of the box.

<CedrosPay
  items={[
    { resource: "pro-plan", quantity: 1 },
    { resource: "extra-seats", quantity: 3 },
  ]}
/>
Why Developers Choose Cedros

Open source. Production-ready. Zero lock-in.

Ship stablecoin payments without new infra, still using the workflows you already trust.

Code brackets and ribbon

Open Source

  • MIT-licensed
  • Full source on GitHub
  • TypeScript-first
Shield and checklist

Production-ready

  • Multi-item carts + coupons
  • Refunds with signed confirmations
  • Responsive theming + error states
Open shackle with plug adapter

Zero lock-in

  • Self-host the Go backend
  • Implement the open API anytime
  • Works with your Stripe and wallets
What’s Coming

The future of Cedros.

We’re doubling down on tools that keep checkout simple while you stay in control.

Dashboard tile with charts

Cedros Store Manager

Manage catalog items, coupons, refunds, and transactions from a single dashboard.

Cloud with server box

Cedros Pay Cloud

Managed backend that connects Stripe and Solana, scales automatically, and sends your funds directly.

Follow us on X to get updates and early access.

Follow →
FAQ

Answers in plain English.

Most answers are below. For everything else, see the Docs and Examples.

How do I get started?

Install @cedros/pay-react, drop the component into your React app, and point the backend to the Go server to verify transactions.

Do I need a custodial wallet?

No. Cedros Pay uses the Solana x402 pattern so funds go directly to your merchant wallet.

Does it replace my Stripe setup?

Keep Stripe exactly as-is. Cedros Pay simply adds Solana stablecoins without rewriting your catalog.