VulCode

SaaS development after the MVP: organisations, billing and scale

The first version works and has paying customers. Now you need organisations and roles, subscriptions with invoices, an API for customers and control over server costs. We run our own SaaS products, so we know these problems from the inside.

Commerce and tech
Organisation settings: members, roles and seats in the plan
An invitation to the organisation with the role described, on a phone

From user accounts to organisations with roles

The most common rebuild after an MVP: the product started with single accounts, but customers buy for teams.

Company 21 Ltd.Team plan, 11 people

Seats in the plan. Seats in the subscription and buying more from the panel, with prorated billing.

Seats in the plan12 of 12 taken
11 people1 invitationa new seat to buy

Roles and permissions

Owner, admin, member and guest with clearly described permissions, checked on the server.

  • Ownereverything, including handing over and deleting the organisation
  • Administratorpeople and roles, plan, seats, invoices, API keys and data export
  • Memberthe organisation's projects and files, tasks and comments
  • Guestonly the projects shared with themno seat

Organisations and invites

Data belongs to the organisation, not the person who created it. An employee leaving does not take the customer's data with them.

  • Projects and filesThey stay in the organisation, whoever added them.
  • API keysFour keys with the organisation's permissions, not those of the people who created them.
  • InvoicesIn the organisation's name; the invoice goes to KSeF.
  • Customer data exportCustomers can download their data in an open format. Many contracts require it and GDPR grants it.
User 07left the organisation on 06.10

38 projects and 214 files stayed in the organisation, taken over by User 02. The API key they created still works.

Development as a service. We run changes like these as platform development, and quote new modules separately.

Billing that needs no human

Subscriptions, invoices and failed payments have to handle themselves before you have a few hundred customers.

  1. Subscription

    Plan, seats and billing period through Stripe.

  2. Invoice

    A company invoice with the organisation's details.

  3. KSeF

    Invoices for Polish companies sent to KSeF. A paid period goes back to the subscription.

  • Retries

    Payment failed: more payment attempts and emails asking for a new card.

  • Suspension

    Overdue: read-only mode instead of deleting data.

A public API customers can integrate without calling you

SaaS customers want to connect your product to their systems. We describe the API in OpenAPI from the first endpoint.

The organisation's API keys with their creator and request counts, a chart of the night export with the limit, and a request ending in 429
  1. Keys bound to the organisation

    An API key is generated in the panel and carries the organisation's permissions, not those of whoever created it.

  2. Cursor pagination

    Lists do not lose records when data is added during a fetch.

  3. Limits instead of outages

    Too many requests end with a 429 and a retry time, not a slowdown for every customer.

Flaem: a SaaS we build ourselves

A panel for hosting companies with provisioning, a store, a wallet and billing. We solve the problems described here on our own product first.

Flaem: the operator's nodes with health, RAM and number of resources

The operator's nodes

Nodes in the operator panel

The servers the panel runs customers' services on, with their health, memory and number of resources.

Flaem: the store with game server, VPS and web hosting plans

The service lifecycle

The store

Purchase, provisioning, payments, limits and renewals in one product.

Flaem: a game server with live CPU, memory, disk and network usage

Live metrics

A customer's game server

Live resource usage for the customer and the operator.

Flaem: the customer dashboard with resources, wallet and quick actions

Many customer brands

The customer's dashboard

The panel runs under the brand and domain of the hosting company using it. The same product in the browser, on the desktop and on the phone.

See Flaem in our ecosystem

Performance and costs before they become a problem

What we check in a growing SaaS. Each one usually shows up with the first large customer. More on our blog: Business hosting: VPS or cloud, After launch: monitoring and maintenance.

Operator panel: the cost of serving each organisation against its plan revenue, p95 response time and the causes of one organisation's cost
  1. Queries that grow with data

    We look for queries that were fine at a hundred rows and slow at a million, and add indexes or change the data model.

  2. Infrastructure cost per customer

    We work out what one customer costs to serve, so pricing does not grow slower than the server bill. Options are compared in our article on business hosting.

  3. Background jobs

    Exports, emails and reports move to a queue so they do not block user requests.

  4. Monitoring and alerts

    Response times and errors per organisation, to know which customer is hurting. Part of our DevOps work.

Questions SaaS companies ask

The most common questions from teams growing a product after the MVP.

Show us your product

Tell us what is blocking development or sales today. We will reply with a plan for the first changes and a free quote.