No Fianto fee during the beta. Any fee comes with at least 30 days notice. See pricing
Guides8 min read

Add a crypto payment option alongside Stripe without changing your billing stack.

You can add crypto payments next to Stripe without touching your card billing: keep Stripe for cards and add a second "Pay with USDC" option that writes to the same customer and access records. If you are a US business happy to be paid in dollars, Stripe's own stablecoin payment method is the smallest change. If you want USDC in your own wallet, no merchant fee, or Stripe's stablecoin option is not open to you, add a separate USDC checkout such as Fianto's beside it.

On this page
Can you add crypto payments without leaving Stripe?How do you add a USDC option next to a Stripe button without code?How do you add USDC to a coded checkout without touching Stripe?How do you keep Stripe and USDC customers in one place?What changes for customers who choose USDC instead of a card?What does Fianto not do that Stripe does?SourcesQuestions
TL;DR
  • Stripe's stablecoin payments (as of 15 October 2026): businesses in the US, private preview in the EU, Hong Kong, Mexico and Switzerland; 1.5% of each payment on its pricing page; settled in your Stripe balance in local currency.
  • Fianto: USDC on Solana straight into your wallet, nothing charged to you; a payment link per plan with no code, or a checkout session keyed to your own order id.
  • Either way, keep one access table with a source column, so a customer paying by card and one paying in USDC get the same access.

Can you add crypto payments without leaving Stripe?

Yes: you can add crypto payments without leaving Stripe, either by switching on Stripe's own stablecoin payment method or by adding a second processor for USDC beside Stripe. Fianto publishes this post and is the second kind, so weigh what follows with that in mind. The Stripe facts below come from Stripe's stablecoin payments docs and its pricing page, both read on 15 October 2026.

Stripe stablecoin paymentsFianto beside Stripe
Who can acceptBusinesses in the US; private preview in the EU, Hong Kong, Mexico and SwitzerlandMerchants Fianto approves by hand after a business profile, two-factor sign-in and a signed wallet proof
Tokens and networksUSDC on Tempo, Ethereum, Solana, Polygon and Base, plus USDP and USDG in the USUSDC on Solana only
Where the money lands"your Stripe balance in your local currency"Your own Solana wallet, as USDC, in the same transaction
Fee to the merchant1.5% of the transaction amount in USD (a separate Link entry lists 0.8% per successful transaction, a promotional rate through 1 January 2027)None. The customer pays any fees on top
RefundsThrough Stripe's refund flow, back to the original walletYou send USDC back from your wallet
SubscriptionsThrough Stripe Billing; the subscriptions guide opens with a request-access formMonthly or yearly plans the customer approves once
Code changesEnable the method in the Stripe DashboardNone with a payment link; a checkout route and a webhook route with the API

Pick Stripe's own method when you qualify and want dollars, Stripe's refunds and one dashboard: it is a setting, not a project. Pick a separate USDC checkout when you want to hold USDC yourself, when 1.5% matters at your price points, or when Stripe's stablecoin option is not available where you operate. A merchant whose Stripe account is at risk should not hang a backup rail on that same account; that case is in Stripe closed my account: USDC as a second rail. The fuller head-to-head is Stripe stablecoin payments vs Fianto checkout.

How do you add a USDC option next to a Stripe button without code?

Without code, you add a USDC option by putting a Fianto payment link next to each Stripe button or Stripe Payment Link. A payment link sells one price, so a pricing page with three plans gets three USDC links, one under each card button.

  1. Create the product and its price in the Fianto dashboard: one-off, monthly (every 30 days) or yearly (every 365 days), in USDC from 0.01 to 1,000,000.
  2. Under Payments, then Payment links, create a link for that price. Set "Ask for email" to "Ask, required" so you can match the payer to an account.
  3. Paste the link under the card button, labelled for what it is, for example "Pay with USDC (Solana)".
  4. When a sale comes in, find it under Payments and grant access by hand, or from your webhook if you have one.

The trade-off is matching. A link checkout gets a random order id (plink_ plus a UUID) and carries no id of yours, and the email the payer types is never verified. That is fine for a handful of sales a week. Beyond that, the coded route below ties each payment to your user. Placing links on WordPress, Webflow, Framer, Carrd or Notion is covered in adding a USDC payment link to a website builder.

How do you add USDC to a coded checkout without touching Stripe?

With code, you add USDC by creating a Fianto checkout session from your own server, using your own order or user id, and listening for Fianto's webhooks beside Stripe's. Your Stripe integration does not change at all. Two create fields do the linking: order_id (your id, up to 128 characters) and customer_reference, which comes back in each order and subscription event as customer.reference. A subscription example in Next.js, shaped like the docs quickstart:

app/api/checkout/usdc/route.ts
// app/api/checkout/usdc/route.ts
import { Checkout } from '@fianto/nextjs';
import { requireUser } from '@/lib/auth'; // your own sign-in helper

export const POST = Checkout({
  createSession: async (request) => {
    const user = await requireUser(request);
    return {
      mode: 'subscription',
      price_id: 'fian_price_...', // your monthly price, copied from the dashboard
      order_id: `sub_${user.id}_pro`, // a later re-subscribe needs a new order_id
      customer_reference: user.id,
      metadata: { plan: 'pro', rail: 'usdc' },
      success_url: 'https://app.example.com/billing?paid=usdc',
      cancel_url: 'https://app.example.com/billing',
    };
  },
});
app/api/webhooks/fianto/route.ts
// app/api/webhooks/fianto/route.ts
import { Webhooks } from '@fianto/nextjs';
import { setAccess } from '@/lib/access'; // writes your access table

export const POST = Webhooks({
  secret: process.env.FIANTO_WEBHOOK_SECRET,
  onSubscriptionCreated: async (event) => {
    const s = event.data;
    await setAccess(s.customer.reference, 'fianto', s.id, s.current_period_end);
  },
  onSubscriptionRenewed: async (event) => {
    const s = event.data;
    await setAccess(s.customer.reference, 'fianto', s.id, s.current_period_end);
  },
  onSubscriptionEnded: async (event) => {
    await setAccess(event.data.customer.reference, 'fianto', event.data.id, null);
  },
});

A subscription creates no order, so order.paid never fires for it: it sends subscription.created, subscription.renewed, subscription.past_due and subscription.ended. A one-off purchase is the opposite: create the session with mode: 'payment' and fulfil on order.paid, which arrives only once Solana has finalized the payment. Every field is in the checkout sessions reference. Store each event id and skip ones you have seen, since delivery is at least once. The full Next.js build, with a page gated on subscription status, is in accepting USDC in a Next.js app.

See the hosted checkout your USDC customers land on, fees and all.

Look at the USDC checkout

How do you keep Stripe and USDC customers in one place?

Keep one access table that both webhook handlers write to, with a column for the rail, rather than asking Stripe or Fianto which customers are paying. Neither knows about the other.

ColumnCard customerUSDC customer
user_idYour user idYour user id, from customer.reference
sourcestripefianto
external_idThe Stripe subscription idThe Fianto subscription id, fian_sub_...
paid_untilFrom your Stripe webhookscurrent_period_end from subscription.created and subscription.renewed
statusFrom your Stripe webhooksACTIVE, PAST_DUE or ENDED, from subscription.* events
  • Before you open either checkout, check the table, so nobody pays the same plan on both rails.
  • Switching a customer from card to USDC is two actions: cancel the Stripe subscription at period end, then send them the USDC checkout. Fianto cannot import a Stripe subscription.
  • Report the two rails separately. Fianto's Overview shows your net in US dollars with an MRR tile, and its CSV exports cover payments, orders, subscriptions and customers. How to book USDC receipts is in accounting for USDC revenue.

What changes for customers who choose USDC instead of a card?

A customer who picks USDC needs a Solana wallet holding USDC and a little SOL, signs once, and cancels in a portal instead of in your app. Tell them before they choose.

  • They pay the fees on top of your price: a Solana transaction fee under $0.01, and on a subscription a flat 0.01 USDC network fee with each charge today plus SOL account rent the checkout shows. There is no Fianto fee during the beta; after it, about 0.1 to 0.5% on top. You receive your full price.
  • A subscription renews every 30 or 365 days from the day they subscribed, not on the date your Stripe plans renew. There are no free trials and no weekly or quarterly plans.
  • They cancel in the customer portal at fianto.xyz/my, and the plan runs to the end of the period paid. Your app cannot cancel it on their behalf except through your Fianto dashboard or API.
  • There are no chargebacks. A refund is USDC you send back from your own wallet.

What does Fianto not do that Stripe does?

Fianto does not replace Stripe: it takes no cards, pays out no dollars and keeps no balance. Before you add it, check these limits against what your Stripe setup does today:

  • No cards, bank transfers or fiat payouts. USDC on Solana only, landing in your wallet.
  • No invoices, tax calculation or team accounts.
  • No test mode or sandbox: production runs on Solana mainnet, and testing uses a test event, the CLI or a small real payment.
  • Products, prices, payment links and coupons are made in the dashboard. The API reads products and prices but cannot create them.
  • Your account is reviewed by hand before it can take payments, and no review time is promised.

If those limits fit, the USDC side is small to run: a link per plan, or one checkout route and one webhook route. The developers page lists the SDKs for Next.js, Express and Hono; accepting USDC with Hono on Workers or Bun walks through one of them.

Sources
Questions

Questions about adding crypto payments next to Stripe.

Can I use Stripe and a crypto payment processor at the same time?

Yes. Stripe keeps taking cards, the crypto processor takes USDC, and your own database decides who has access. Neither system needs to know about the other.

Does Stripe accept USDC itself?

Yes, for eligible businesses. As of 15 October 2026 Stripe's docs list US businesses, with a private preview in the EU, Hong Kong, Mexico and Switzerland, and the payments settle in the Stripe balance in local currency.

Can Fianto import my existing Stripe subscriptions?

No. A customer moving to USDC cancels the Stripe subscription and subscribes again through a Fianto checkout, approving the plan once from their wallet.

How do I link a USDC payment to my user account?

Create the checkout session from your server with your own order_id and customer_reference. Every order and subscription event then carries customer.reference, so your webhook knows which user paid.

Do I pay fees on USDC payments through Fianto?

No. The merchant pays nothing. The customer pays the Solana transaction fee and, on subscriptions, a flat network fee per charge; there is no Fianto fee during the beta.

Read next.

Guides7 min read

Add a USDC payment link to WordPress, Webflow, Framer, Carrd or Notion

You add USDC payments to a WordPress, Webflow, Framer, Carrd or Notion site by pasting a Fianto payment link into a button or a text link. The link is a plain address of the form https://checkout.fianto.xyz/l/<code>, so no plugin, script or embed is involved, and Fianto offers none for payment links. Each link sells one price, one-off or recurring, and every click opens a fresh checkout where the customer pays from a Solana wallet.

ComparePayments8 min read

Stripe stablecoin payments vs Fianto checkout for one-off USDC sales

Stripe's one-off stablecoin payments cost the merchant 1.5% of the amount on Stripe's pricing page as of 15 October 2026, accept USDC on five networks including Solana, and settle in your Stripe balance in your local currency. Fianto's checkout accepts only USDC on Solana, charges the merchant nothing, and the customer's transaction puts the USDC in your own wallet. Stripe suits US businesses that want dollars and one checkout for cards and crypto; Fianto suits sellers who want to keep USDC, or who cannot use Stripe's crypto payment method.

Developers9 min read

Accept USDC in a Next.js app, and gate pages by subscription status

To accept USDC in a Next.js App Router app, install @fianto/nextjs, export Checkout() from a route that creates the session and Webhooks() from a route that receives signed events, then render FiantoButton from @fianto/react. Grant and revoke access from the webhook, never from the browser: store each subscription's status (ACTIVE, PAST_DUE or ENDED) and let your pages read it.

Keep Stripe. Add a second door.

One link per plan today, one webhook route when volume grows.

New posts are announced on X and Discord.