Categories
SaaS

Payment Processing for SaaS: From Billing to Scale

SaaS payment processing isn’t a one-off checkout – it’s the infrastructure that keeps recurring revenue flowing month after month, across multiple currencies, with automatic recovery when cards fail. Getting it right early prevents the painful and churn-risky migration that comes from outgrowing a setup that was built for your first hundred customers.

Key takeaways

  • Recurring billing requires tokenization, retry logic, and proration handling – not just the ability to push a card charge on demand.
  • Industry benchmarks put first-attempt failure rates at 5-10%; a dunning sequence with scheduled retries and email prompts recovers the majority without customer intervention.
  • Network tokenization auto-updates stored cards when reissued, cutting involuntary churn from expiry – a meaningful gain for any subscription model.
  • A 13-currency wallet and local-currency billing change the economics of international SaaS meaningfully versus converting every transaction at the processor’s rate.
  • The best time to get payment infrastructure right is before billing complexity outpaces your setup – migrating tokens and retry logic carries real churn risk.

At some point in every SaaS company’s growth, the payments setup that got you to your first hundred customers stops being good enough. You’re billing monthly and annually. You have customers in five countries who pay in different currencies. Someone on the team is manually chasing failed renewals every week. And the integration you bolted together eighteen months ago is starting to creak.

Payment processing for SaaS isn’t just a gateway for one-off charges. It’s infrastructure – and it needs to be built like it.

Why Payment Processing for SaaS Is Different

A consumer buying a pair of shoes online needs one transaction to go through once. A SaaS customer needs their payment to work on the same day every month, for as long as they’re a subscriber.

That distinction changes everything. Where a retail checkout is optimised for conversion, a SaaS billing system is optimised for reliability. A failed payment in e-commerce is a lost sale. A failed payment in SaaS is involuntary churn – and involuntary churn is one of the hardest metrics to recover.

SaaS payment processing also tends to involve more complexity than a single checkout page. You might offer monthly and annual plans, seat-based pricing, usage-based tiers, free trials with card capture, and mid-cycle upgrades. Each of those requires a billing layer that understands proration, credit, and retry logic – not just the ability to push a card charge.

Recurring Billing: The Engine Under Your Revenue Model

Recurring billing is the mechanism that turns a one-time signup into monthly recurring revenue. The basics are straightforward: you tokenise the customer’s card at the point of signup, store the token, and charge against it on each billing date.

What makes it complex in practice is everything that surrounds that loop. Subscription payment processing needs to handle plan changes mid-cycle. It needs to deal with customers who pause and reactivate. It needs to issue accurate prorations when a customer upgrades from a lower tier on day 12 of a 30-day cycle.

For multi-market SaaS, there’s a currency layer on top. If you’re billing customers in EUR, GBP, SGD, and USD, your payment infrastructure needs to handle all of those natively – ideally in a way that lets you hold balances in each currency rather than converting every transaction at whatever rate the processor applies that day. A 13-currency wallet changes the economics of international billing meaningfully.

Managing Failed Payments and Involuntary Churn

Industry benchmarks suggest that 5 to 10% of recurring payments fail at the first attempt. Most of those failures are soft declines – temporary issues with the card or the issuing bank, not permanent problems. The majority can be recovered with a retry.

Dunning management is the practice of systematically retrying failed charges and communicating with customers to update card details before their subscription lapses. Done well, it recovers the bulk of those soft declines without the customer ever realising there was an issue.

An effective dunning setup involves: immediate retry on soft decline, a scheduled retry sequence over the following days, and an email sequence that prompts the customer to update payment details if retries exhaust. For high-value annual subscriptions, proactive card expiry notifications (sent before the card expires, not after it fails) are worth building in.

Network tokenisation makes a meaningful difference here. When a customer’s physical card is reissued or expires, the card network can update the token automatically – meaning your stored payment method keeps working without the customer needing to take any action. For a SaaS platform, that translates directly into fewer involuntary churns from card expiry alone.

Compliance and Tokenisation for SaaS Platforms

SaaS platforms that store payment methods are responsible for how those payment credentials are handled. You don’t want to store raw card numbers – that creates PCI scope you don’t need and liability you definitely don’t want.

Tokenisation solves this. Your payment provider holds the actual card data in a secure vault; you hold a token that references it. Your database, your CRM, your billing system – they all see tokens, not card numbers. Even if someone breaches your systems, there’s nothing there that can be used to make a fraudulent charge.

For SaaS billing integration, the practical question is whether your payment provider handles tokenisation as a default and whether those tokens work across the channels you need: web checkout, API-driven charges, and any mobile experience you have or plan to build.

A recurring payment gateway for SaaS should also handle 3DS (3D Secure) challenges appropriately – applying them when the card issuer requires it but not adding unnecessary friction to returning customers who’ve already established a payment method.

Choosing a Payment Partner That Scales With Your SaaS

The payment API for software companies that makes sense at ten customers may not make sense at ten thousand. When you’re evaluating providers, there are a few dimensions that matter specifically for SaaS.

API quality. Your billing logic needs to integrate cleanly. A well-documented REST API with clear error codes, webhook support, and sandbox environments is the baseline. Embedded payments – where payment functionality lives inside your own product interface rather than redirecting to an external provider – requires an API that can support that architecture.

Multi-currency billing. If you plan to serve international customers, you need a payment infrastructure that supports billing in local currencies, holding multi-currency balances, and settling to your home currency on your schedule – not the processor’s.

Pricing model alignment. No setup fee and no monthly fee means your payment cost scales with your revenue. For early-stage SaaS, that matters. Volume discounts as you scale mean the unit economics improve rather than staying flat.

Card network breadth. For multi-market SaaS, accepting Visa, Mastercard, Amex, JCB, and UnionPay covers the full range of customer card types across Asia-Pacific and beyond.

All-in-one consolidation. The fewer payment tools you’re maintaining, the simpler your operations. A platform that handles online payments, multi-currency wallet, API disbursements, and batch payouts in one integration reduces the number of things that can go wrong.

Building a Reliable Payments Foundation

The best time to get your payment infrastructure right is before your billing complexity outpaces your setup. Migrating a recurring billing system – porting tokens, rebuilding retry logic, communicating with customers about payment method updates – is operationally expensive and carries real churn risk.

If you’re evaluating or rebuilding your payment stack, the payment processing business guide at ONE Payments covers the practical considerations for SaaS and subscription-based businesses – including how to think about API-first infrastructure, embedded finance, and omni-channel payment acceptance that grows with your model.

For background on recurring billing standards and compliance, the PCI Security Standards Council publishes relevant guidance on stored credential handling for subscription merchants.

Related reading

Categories
SaaS

Choosing a Tech Stack for a Small SaaS in 2026

Every few months someone posts a “what stack should I use for my SaaS?” thread and the replies devolve into a holy war. Having shipped a few small products and helped others pick theirs, I’ve come to believe the question is almost always the wrong one. The right question is: what does your team already know, and what will let you validate in four to six weeks?

That said, 2026 has a clearer landscape than 2021 did. The churn has slowed. Some choices have become obvious defaults, and I’ll walk through the ones I’d actually make if starting fresh today.

Frontend: stick with React unless you have a strong reason not to

The ecosystem around React is massive – Next.js, Remix, TanStack Router, a dozen UI component libraries, and more hiring options than any other framework. For a small SaaS, that hiring optionality matters even at day one, because you’re eventually going to hand something off or bring someone in.

Next.js 14+ with the App Router is my default. Server Components cut the amount of client-side JS you ship, which matters for perceived performance and Core Web Vitals. The file-based routing is predictable enough for a solo founder to maintain. If your app is highly interactive and server rendering buys you nothing, Remix is worth a look – its form handling model is genuinely good for CRUD-heavy dashboards.

For styling I’d pick Tailwind CSS with a headless component library like Radix UI or shadcn/ui. You get accessible primitives without fighting a design system someone else built. The component catalogue at ui.shadcn.com is worth bookmarking.

Backend: the boring stack wins

If your team writes TypeScript, a Node backend with Fastify or Express keeps the language consistent and reduces context switching. Fastify’s schema-based validation with JSON Schema is underrated – it documents your API while it validates it.

import Fastify from 'fastify'

const app = Fastify({ logger: true })

app.get('/health', async (req, reply) => {
  return { status: 'ok' }
})

app.listen({ port: 3001, host: '0.0.0.0' })

If you’re coming from Python, Django REST Framework is still a strong choice – it has the widest library support for things like background tasks, auth, and admin interfaces. FastAPI is faster and has better type hints, but the ecosystem around DRF (especially for auth and multi-tenancy) is deeper.

Go is worth considering if you expect high concurrency early or if you’re building something infrastructure-adjacent. The standard library covers a lot without dependencies, and deployment is a single binary. The tradeoff is slower initial development velocity.

Database: Postgres, almost always

Postgres is the right default for the vast majority of SaaS applications. It handles relational data, JSONB columns for semi-structured fields, full-text search, and with pgvector it now handles vector embeddings too. You can run it managed on AWS RDS, Neon, Supabase, or Railway. The operational knowledge is widely available.

The only time I’d reach for something else immediately is if the data model is fundamentally graph-shaped (consider Neo4j) or if you’re building a time-series product from the start (TimescaleDB or ClickHouse). For everything else, start Postgres and migrate later if you hit a genuine ceiling.

Use an ORM or query builder – raw SQL in application code without some abstraction becomes a maintenance problem. Prisma is popular in the TypeScript world and its migration tooling is solid. SQLAlchemy is the Python equivalent. Both generate the schema from your code and keep migrations version-controlled.

Auth: don’t build it yourself

Auth is one of the few areas where “buy vs. build” has a clear answer for a small SaaS: buy it. The edge cases in authentication – session fixation, CSRF, token rotation, magic links, SAML for enterprise customers – are genuinely hard to get right and not where you want to spend two sprints.

Clerk, Auth0, and Supabase Auth are all workable. Clerk has the best developer experience for Next.js specifically. Auth0 is better if you need SAML/SCIM for enterprise from day one. If you’re already on Supabase for the database, their auth is fine and saves you an integration.

Hosting and infrastructure

For the early stage, managed hosting beats infrastructure-as-code. Railway, Render, and Fly.io all let you deploy a Docker container with a database and get a working URL in an hour. Save Terraform and ECS for when you have actual scale reasons to invest in them.

Object storage is S3 or a compatible alternative (Cloudflare R2 is cheaper for egress-heavy use cases). CDN is Cloudflare – free tier is sufficient for most small SaaS apps.

The stack I’d actually use today

If I were starting a B2B SaaS solo or with one other person in 2026, I’d use: Next.js + Tailwind + shadcn/ui on the frontend, Fastify with TypeScript on the backend, Postgres via Neon for the database, Prisma for ORM, Clerk for auth, and Fly.io or Railway for hosting. This stack lets two people move fast, has good hiring options when the team grows, and avoids building infrastructure that doesn’t differentiate the product.

The one thing I’d add that’s newer: budget time for observability from day one. A structured logger, error tracking like Sentry, and basic uptime monitoring cost almost nothing and save hours of debugging production issues blindly. More on that in a separate post.

The official Next.js docs are worth reading cover to cover once: nextjs.org/docs. And the Fastify documentation is unusually good for a Node framework: fastify.dev/docs.