The failure paths
are the work.

Stripe wired for trials, upgrades, proration, cancellation, dunning and failed payments. The happy path is an afternoon; the rest is why this is its own line of work.

Taking a first payment is genuinely easy now. What is not easy is everything the subscription does afterwards: the trial that has to convert or expire cleanly, the mid-cycle upgrade that needs proration your customer would agree with, the cancellation that should keep access until the period ends, and the card that expires eighteen months in.

Failed payments are where revenue leaks quietly. Without a dunning sequence — retries on a sensible schedule, a notification the customer actually receives, a defined point at which access changes — accounts drift into a state where the product is being delivered and nothing is being collected. Nobody notices, because nothing looks broken.

Webhooks are the other reliability question. Payment events arrive asynchronously, occasionally more than once and occasionally out of order, and an integration that assumes otherwise will eventually double-charge or fail to grant access. Idempotent handling is a requirement rather than a refinement.

For EU businesses there is tax on top: VAT and IVA treatment differ by customer location and status, and invoices carry legal content requirements. This is configured deliberately rather than left at defaults.

PostgresPrismaStripeNext.jsMulti-tenant

What you get

  • Subscription lifecycle: trial, active, past due, cancelled, reactivated
  • Proration on upgrades and downgrades
  • Dunning: retry schedule, customer notification, access change
  • Idempotent webhook handling with replay safety
  • EU VAT and IVA configuration, and compliant invoices

Not included

  • Ongoing support retainer unless contracted separately
  • Third-party licence fees
Proof

Kitchen Stocker

Multi-tenant inventory and cost control for restaurants, built and operated by us.

Read the case study

Frequently asked questions

Do you only work with Stripe?
It is the default because the API is strong and the subscription primitives are already correct. If you need another processor for regional or contractual reasons we will integrate it, but we will also tell you where it will cost more work than Stripe would.
How is EU VAT handled?
Through Stripe's tax handling, configured for your situation rather than left at defaults, since treatment varies by customer location and whether they are a business. Your accountant should confirm the tax position itself — we implement it correctly, we do not advise on it.
Are we handling card data?
No, and that is deliberate. Card details go directly to the processor and never touch your servers, which keeps you out of the most demanding parts of PCI scope. Any design that routes card data through your own application is one we would argue against.

More in Custom software & SaaS

All Custom software & SaaS
Contact

Tell us what
needs building.

You'll get a written specification covering scope, architecture and acceptance criteria before any commitment on either side. If we're not the right studio for the work, we'll tell you.

We use what you send only to reply. See Privacy below.

Location
Valencia, Spain
Clients
Worldwide
Languages
English · Spanish