Launch

  • experiments
  • usage-based
  • free trials
  • freemium
  • self-service
  • new pricing

today

The problem of pricing is rooted in code, not billing.

Developers use Stigg's software & API to instantly build any pricing plan, gauge access control, introduce paywalls and customer portals, and fearlessly test & roll out changes.

IN PRODUCTION AT

Headless pricing engineered for fast-moving teams

Basically, we make your buyer experience awesome.

Why Stigg?

Build fast
Stigg’s API and SDKs let you launch plans, gate features, and introduce self-service additions in minutes.
Release confidently
Build safely in multi-environment and gradually roll out new pricing, without affecting existing customers.
Stay flexible
Requirements change. Stigg supports any change - from small to major - in a few button clicks.
Enable more
With Stigg’s no-code platform, anybody can easily run experiments, monitor usage, or extend individual plans.

Integrate once,

never deal with

  • billing
  • customer portals
  • trials
  • usage metering
  • feature limits
  • paywalls

Define metered or unmetered features and easily set limits for each plan.

import React from 'react';
‚Äćimport { useStiggContext } from '@stigg/react sdk';
‚Äć
const AddMemberButton = ({
  showAddMemberDialog,
  showUpsellDialog
}) => {
 const { stigg } = useStiggContext();
 return (
  <Button
   onClick={() => {
     const entitlement = stigg.getMeteredEntitlement({
         featureId: 'seats',
         options: {
           requestedUsage: 1,
         },
       });
       if (!entitlement.hasAccess) {
         showUpsellDialog();
       } else {
         showAddMemberDialog();
       }
     }}
   >
     Invite users
   </Button>
 );
};

Report usage per customer to gate access and communicate usage in Stigg’s platform and customer portal.

import Stigg from '@stigg/node-server-sdk';
import express from 'express';
‚Äć
const stigg = await Stigg.initialize({
  apiKey: 'SERVER_API_KEY'
‚Äć
});

const app = express();
‚Äć
app.post('/api/send-emails', async (req, res) => {
 const { recipients, message } = req.body;
‚Äć
 const emailsCount = await sendEmails(recipients, message);  

 await stigg.reportUsage({
   customerId: req.user.orgId,
   featureId: 'feature-email-sends',
   value: emailsCount // increment usage
 });
‚Äć
 res.json({ message: `${emailsCount} emails were sent` });
});

Add complete trial experiences to any pricing plan. No additional engineering work involved.

import React from 'react';
import { useStiggContenxt } from '@stigg/react-sdk';
‚Äć
 export const TrialBanner = () => {
   const [trialRemainingDays, setTrialRemainingDays] =    useState();
   const { stigg } = useStiggContenxt();
‚Äć
   useEffect(() => {
   stigg
     
.getCustomerPortal()
     .then(({ subscriptions }) => {
       const daysLeft = subscriptions[0]?.trialRemainingDays;          setDaysLeft(daysLeft);
     });
 }, [stigg]);
‚Äć
  return (
   <TrialBannerText>
    {trialRemainingDays} days left in your trial
   </TrialBannerText>
  );
};

Use best-in-class paywall widgets in-app and on the pricing page. Automatically update changes in your pricing model.

import React from 'react';
import { StiggProvider, Paywall } from '@stigg/react-sdk';
‚Äć
const PricingPlans = ({ subscribeToPlan }) => {
 return (
  <
StiggProvider apiKey="CLIENT_API_KEY">
    <Paywall
      highlightedPlanId="pro-plan"
      onPlanSelected={({plan, customer }) => {                subscribe(plan, customer);
      }}
    />
  </StiggProvider>
 );
};

Introduce customer portals out of the box. Let customers control their plan, usage, and billing history.

import React from 'react';
import {
  StiggProvider,
  CustomerPortal
} from '@stigg/react-sdk/
import { PricingPlans } from './PricingPlans';
‚Äć
export const CustomerPortalPage = () => (
 <StiggProvider
   apiKey
="CLIENT_API_KEY"
   customerId="CUSTOMER_ID"
 
>
  <CustomerPortal
    paywallComponent={<PricingPlans />}
  />
 
</StiggProvider>
);

Integrate once, never deal with billing again. Easily import existing data. No more Stripe IDs. No more webhooks. Switch billing providers with a click of a button.

import Stigg from'@stigg/node-server-sdk';
import express from 'express';
‚Äć
const stigg = await Stigg.initialize({
  apiKey: 'SERVER_API_KEY'
});
‚Äć
const app = express();
‚Äć
app.post('/api/subscribe/', async (req, res) => {
 const { user, body } = req;
 const { planId, billingPeriod } = body;
‚Äć
 const provisionResult = await stigg.provisionSubscription({
   customerId: user.orgId,
   planId: planId,
   billingPeriod,
   checkoutOptions: {
     successUrl: 'https://app.acme.com/success',
     cancelUrl: 'https://app.acme.com/failure',
   }
 });
 if (provisionResult.provisionStatus === 'PaymentRequired') {
   res.json({
     redirectTo: provisionResult.checkoutUrl
   });

Feature limits

Define metered or unmetered features and easily set limits for each plan.
import React from 'react';
‚Äćimport { useStiggContext } from '@stigg/react sdk';
‚Äć
const AddMemberButton = ({
  showAddMemberDialog,
  showUpsellDialog
}) => {
 const { stigg } = useStiggContext();
 return (
  <Button
   onClick={() => {
     const entitlement = stigg.getMeteredEntitlement({
         featureId: 'seats',
         options: {
           requestedUsage: 1,
         },
       });
       if (!entitlement.hasAccess) {
         showUpsellDialog();
       } else {
         showAddMemberDialog();
       }
     }}
   >
     Invite users
   </Button>
 );
};

Usage metering

Report usage per customer to gate access and communicate usage in Stigg’s platform and customer portal.
import Stigg from '@stigg/node-server-sdk';
import express from 'express';
‚Äć
const stigg = await Stigg.initialize({
  apiKey: 'SERVER_API_KEY'
‚Äć
});

const app = express();
‚Äć
app.post('/api/send-emails', async (req, res) => {
 const { recipients, message } = req.body;
‚Äć
 const emailsCount = await sendEmails(recipients, message);  

 await stigg.reportUsage({
   customerId: req.user.orgId,
   featureId: 'feature-email-sends',
   value: emailsCount // increment usage
 });
‚Äć
 res.json({ message: `${emailsCount} emails were sent` });
});

Trials

Add complete trial experiences to any pricing plan. No additional engineering work involved.
import React from 'react';
import { useStiggContenxt } from '@stigg/react-sdk';
‚Äć
 export const TrialBanner = () => {
   const [trialRemainingDays, setTrialRemainingDays] =    useState();
   const { stigg } = useStiggContenxt();
‚Äć
   useEffect(() => {
   stigg
     
.getCustomerPortal()
     .then(({ subscriptions }) => {
       const daysLeft = subscriptions[0]?.trialRemainingDays;          setDaysLeft(daysLeft);
     });
 }, [stigg]);
‚Äć
  return (
   <TrialBannerText>
    {trialRemainingDays} days left in your trial
   </TrialBannerText>
  );
};

Paywalls

Use best-in-class paywall widgets in-app and on the pricing page. Automatically update changes in your pricing model.
import React from 'react';
import { StiggProvider, Paywall } from '@stigg/react-sdk';
‚Äć
const PricingPlans = ({ subscribeToPlan }) => {
 return (
  <
StiggProvider apiKey="CLIENT_API_KEY">
    <Paywall
      highlightedPlanId="pro-plan"
      onPlanSelected={({plan, customer }) => {                subscribe(plan, customer);
      }}
    />
  </StiggProvider>
 );
};

Customer portals

Introduce customer portals out of the box. Let customers control their plan, usage, and billing history.
import React from 'react';
import {
  StiggProvider,
  CustomerPortal
} from '@stigg/react-sdk/
import { PricingPlans } from './PricingPlans';
‚Äć
export const CustomerPortalPage = () => (
 <StiggProvider
   apiKey
="CLIENT_API_KEY"
   customerId="CUSTOMER_ID"
 
>
  <CustomerPortal
    paywallComponent={<PricingPlans />}
  />
 
</StiggProvider>
);

Billing

Connect your billing once, easily import existing data, and let us do the maintenance for you.
import Stigg from'@stigg/node-server-sdk';
import express from 'express';
‚Äć
const stigg = await Stigg.initialize({
  apiKey: 'SERVER_API_KEY'
});
‚Äć
const app = express();
‚Äć
app.post('/api/subscribe/', async (req, res) => {
 const { user, body } = req;
 const { planId, billingPeriod } = body;
‚Äć
 const provisionResult = await stigg.provisionSubscription({
   customerId: user.orgId,
   planId: planId,
   billingPeriod,
   checkoutOptions: {
     successUrl: 'https://app.acme.com/success',
     cancelUrl: 'https://app.acme.com/failure',
   }
 });
 if (provisionResult.provisionStatus === 'PaymentRequired') {
   res.json({
     redirectTo: provisionResult.checkoutUrl
   });

We’ve built snap-in widgets, so you don’t have to

Paywall

Add best-in-class paywalls to your application and public pricing page, completely customizable. Automatically reflects changes in your pricing model.

Add best-in-class paywalls to your application and public pricing page, completely customizable. Automatically reflects changes in your pricing model.Add best-in-class paywalls to your application and public pricing page, completely customizable. Automatically reflects changes in your pricing model.
import React from 'react'
import { StiggProvider, Paywall } from '@stigg/react-sdk'

export const PricingPlans = ({ onSubscribe }) => {
return (
 <StiggProvider customerId="CUSTOMER_ID" apiKey="CLIENT_API_KEY">
   <Paywall
     highlightedPlanId="PLAN_ID"
     onPlanSelected={({ plan, customer }) => {
        onSubscribe(plan, customer);
     }}
   />
 </StiggProvider>
);
};
<script setup lang="ts">
import {
 StiggProvider, StiggProviderProps, Paywall, PaywallProps
} from '@stigg/vue-sdk';
   
const stiggProvider: StiggProviderProps = {
 apiKey: "<STIGG_CLIENT_API_KEY>",
}
     
const paywall: PaywallProps = {
  onPlanSelected: ({plan}) => {
     console.log(`Selected plan: ${plan.displayName}`);
  }
}
</script>

<template>
  <StiggProvider v-bind="stiggProvider">
     <Paywall v-bind="paywall" />
  </StiggProvider>
</template>
import type { NextPage } from 'next'
import { Paywall, Plan, StiggProvider } from "@stigg/react-sdk";


const PricingPlans: NextPage = () => {
 return (
   <StiggProvider apiKey="STIGG_CLIENT_API_KEY">
     <Paywall onPlanSelected={({ plan }: { plan: Plan }) => {
       console.log(`Selected plan: ${plan.displayName}`);
     }} />
   </StiggProvider>
 )
}

export default PricingPlans
<!DOCTYPE html>
<html>
 <head>
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@stigg/embed-
sdk@latest/dist/embed-sdk.css"
/>
 </head>
 <body>
   <script src="https://cdn.jsdelivr.net/npm/@stigg/embed-sdk@latest/dist/embed-sdk.js">
</script>
‚Äć
   <div id="paywall"></div>
‚Äć
   <script>
     const stigg = Stigg({
       apiKey: "CLIENT_API_KEY",
     });
‚Äć
     const paywall = stigg.Paywall({
       onPlanSelected: ({ plan }) => {
         console.log('Plan selected', plan.displayName);
       },
     });
‚Äć
     // mount the paywall to the container element
‚Äć
     paywall.mount('#paywall');
     </script>
 </body>
</html>
<!DOCTYPE html>
<html>
 <head>
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@stigg/embed-
sdk@latest/dist/embed-sdk.css"
/>
 </head>
 <body>
   <script src="https://cdn.jsdelivr.net/npm/@stigg/embed-sdk@latest/dist/embed-sdk.js">
</script>
‚Äć
   <div id="paywall"></div>
‚Äć
   <script>
     const stigg = Stigg({
       apiKey: "CLIENT_API_KEY",
     });
‚Äć
     const paywall = stigg.Paywall({
       onPlanSelected: ({ plan }) => {
         console.log('Plan selected', plan.displayName);
       },
     });
‚Äć
     // mount the paywall to the container element
‚Äć
     paywall.mount('#paywall');
     </script>
 </body>
</html>
<!DOCTYPE html>
<html>
 <head>
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@stigg/embed-
sdk@latest/dist/embed-sdk.css"
/>
 </head>
 <body>
   <script src="https://cdn.jsdelivr.net/npm/@stigg/embed-sdk@latest/dist/embed-sdk.js">
</script>
‚Äć
   <div id="paywall"></div>
‚Äć
   <script>
     const stigg = Stigg({
       apiKey: "CLIENT_API_KEY",
     });
‚Äć
     const paywall = stigg.Paywall({
       onPlanSelected: ({ plan }) => {
         console.log('Plan selected', plan.displayName);
       },
     });
‚Äć
     // mount the paywall to the container element
‚Äć
     paywall.mount('#paywall');
     </script>
 </body>
</html>
<!DOCTYPE html>
<html>
 <head>
   <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@stigg/embed-
sdk@latest/dist/embed-sdk.css"
/>
 </head>
 <body>
   <script src="https://cdn.jsdelivr.net/npm/@stigg/embed-sdk@latest/dist/embed-sdk.js">
</script>
‚Äć
   <div id="paywall"></div>
‚Äć
   <script>
     const stigg = Stigg({
       apiKey: "CLIENT_API_KEY",
     });
‚Äć
     const paywall = stigg.Paywall({
       onPlanSelected: ({ plan }) => {
         console.log('Plan selected', plan.displayName);
       },
     });
‚Äć
     // mount the paywall to the container element
‚Äć
     paywall.mount('#paywall');
     </script>
 </body>
</html>

Customer Portal

Enable your customers to be on top of their usage, pricing plan, and billing with self-service customer portals. Automatically updates when your pricing changes.

Enable your customers to be on top of their usage, pricing plan, and billing with self-service customer portals. Automatically updates when your pricing changes.Enable your customers to be on top of their usage, pricing plan, and billing with self-service customer portals. Automatically updates when your pricing changes.
import React from 'react'
import { StiggProvider, CutomerPortal} from '@stigg/react-sdk'

export const BillingPortal= () => {
return (
 <StiggProvider customerId="CUSTOMER_ID" apiKey="CLIENT_API_KEY">
   <CustomerPortal />
 </StiggProvider>
);
};
<script setup lang="ts">
import {StiggProvider, CustomerPortal, CustomerPortalProps} from '@stigg/vue-sdk';
   
const apiKey = "<STIGG_CLIENT_API_KEY>";

const customerId = "<CUSTOMER-ID>";

const customerPortal: CustomerPortalProps = {
  onManageSubscription: () => {
    console.log('Manage subscription');
  }
}
</script>

<template>
  <StiggProvider :apiKey="apiKey" :customer-id="customerId">
     <CustomerPortal v-bind="customerPortal"/>
  </StiggProvider>
</template>
import type { NextPage } from 'next'
import { CustomerPortal, StiggProvider} from "@stigg/react-sdk";

const PricingPlans: NextPage = () => {
 return (
   <StiggProvider apiKey="STIGG_CLIENT_API_KEY" customerId="CUSTOMER_ID">
     <CustomerPortal />
   </StiggProvider>
 )
}

export default PricingPlans

Checkout

Easily accept payments with pre-built checkout flows. Automatically reflects changes in your pricing model. Fully compatible with any billing provider.

Easily accept payments with pre-built checkout flows. Automatically reflects changes in your pricing model. Fully compatible with any billing provider.Easily accept payments with pre-built checkout flows. Automatically reflects changes in your pricing model. Fully compatible with any billing provider.
import React from 'react'
import { StiggProvider, Checkout} from '@stigg/react-sdk'

export const CheckoutView= () => {
return (
 <StiggProvider customerId="CUSTOMER_ID" apiKey="CLIENT_API_KEY">
   <Checkout />
 </StiggProvider>
);
};
<script setup lang="ts">
import {StiggProvider, Checkout, CheckoutProps} from '@stigg/vue-sdk';
   
const apiKey = "<STIGG_CLIENT_API_KEY>";

const customerId = "<CUSTOMER-ID>";

const checkoutProps: CheckoutProps = {
  onCheckout: () => {
    console.log('Customer checked out');
  }
}
</script>

<template>
  <StiggProvider :apiKey="apiKey" :customer-id="customerId">
     <Checkout v-bind="checkoutView"/>
  </StiggProvider>
</template>
import type { NextPage } from 'next'
import { CustomerPortal, StiggProvider} from "@stigg/react-sdk";

const CheckoutView: NextPage = () => {
 return (
   <StiggProvider apiKey="STIGG_CLIENT_API_KEY" customerId="CUSTOMER_ID">
     <Checkout />
   </StiggProvider>
 )
}

export default CheckoutView

Get started with Stigg the way you want.

SDKs & API

API controls for every feature, incl. API playground. Easy-to-integrate SDKs in multiple languages.

See our SDKs

API-Gateway

Integrate faster with AWS API Gateway and and gate features from one place only using Lambda authorizers.

See our API-Gateway

Bring your own solution

Use Stigg's cloud services and UI to build a custom integration on top of your own solution.

See our CMS-like integration

Built for speed & scale

<100ms
to serve entitlement requests
99.99%
up time with multiple layers of redundancy
100M+
requests handled monthly worldwide
16M+
subscriptions managed monthly

Fully compliant and secure

Stigg’s platform undergoes rigorous external audits and regular updates to deliver the highest grade of industry security and compliance standards, including SOC 2 Type II compliant and ISO 27001 certified.

Don’t take our word for it

As seen in
"As an engineering leader, what Stigg really gives me is focus. It allows me to focus on how can we bring more growth to the company, while the 'gravy' around pricing & packaging is taken care of."
Utkarsh Sengar
Utkarsh Sengar
Director of Engineering, Growth @ Webflow
"Not consulting, but if you're looking for a product to help with your PLG pricing, you should check out Stigg."
Bill Staples
Bill Staples
CEO @ New Relic
"Optimizing pricing & packaging is crucial for PLG companies, but technical challenges in the implementation often prevent rapid changes. Stigg would have been a huge help to our developers at both SendGrid and GitLab."
Scott Williamson
Scott Williamson
CPO, ex Gitlab, ex Sendgrid
"Packaging the value your product offers and pricing it effectively are often under-explored growth levers to your business. Being able to rapidly iterate your pricing to fit your evolving customer base is a must at every stage of your business."
Srinivas Somayajula
Srinivas Somayajula
Head of Product Ops & Monetization @ Calendly
"Flexibility in pricing & plans is critical for the success of SaaS companies. Even harder when catering for both Enterprise and PLG sales. You don't want these operational considerations to become an obstacle for success."
Tal Lev-Ami
Tal Lev-Ami
Co-Founder & CTO @ Cloudinary
"Immediately after launching self-service purchasing at Gong, we saw a stream of customers buying seats online instead of reaching out to their CSMs. This ability quickly became an important part of our go-to-market motion."
Eilon Reshef
Eilon Reshef
Co-Founder and CPO @ Gong

Launch new pricing

Try Stigg

Built for speed & scale

<100ms
to serve entitlement requests
99.99%
up time with multiple layers of redundancy
100M+
requests handled monthly worldwide
100K
subscriptions managed monthly

Don’t take our word for it

"Optimizing pricing & packaging is crucial for PLG companies, but technical challenges in the implementation often prevent rapid changes. Stigg would have been a huge help to our developers at both SendGrid and GitLab."
Scott Williamson
CPO, ex Gitlab, ex Sendgrid
"As an engineering leader, what Stigg really gives me is focus. It allows me to focus on how can we bring more growth to the company, while the 'gravy' around pricing & packaging is taken care of."
Utkarsh Sengar
Director of Engineering, Growth @ Webflow
"Not consulting, but if you're looking for a product to help with your PLG pricing, you should check out Stigg."
Bill Staples
CEO @ New Relic
"Optimizing pricing & packaging is crucial for PLG companies, but technical challenges in the implementation often prevent rapid changes. Stigg would have been a huge help to our developers at both SendGrid and GitLab."
Scott Williamson
CPO, ex Gitlab, ex Sendgrid
"Packaging the value your product offers and pricing it effectively are often under-explored growth levers to your business. Being able to rapidly iterate your pricing to fit your evolving customer base is a must at every stage of your business."
Srinivas Somayajula
Head of Product Ops & Monetization @ Calendly
"Flexibility in pricing & plans is critical for the success of SaaS companies. Even harder when catering for both Enterprise and PLG sales. You don't want these operational considerations to become an obstacle for success."
Tal Lev-Ami
Co-Founder & CTO @ Cloudinary
"Immediately after launching self-service purchasing at Gong, we saw a stream of customers buying seats online instead of reaching out to their CSMs. This ability quickly became an important part of our go-to-market motion."
Eilon Reshef
Co-Founder and CPO @ Gong
"We saw firsthand how tedious & annoying it is to use existing services for SaaS payments. APIs & abstractions are not tailored to SaaS subscriptions. We were forced to do a lot of undifferentiated heavy lifting, Stigg could have solved for us."
Guy Smoilovsky
Co-Founder & CTO @ DAGsHub
"With product-led growth gaining momentum, more and more SaaS companies support a freemium plan or free trial. Setting up the right infrastructure to support full pricing and packaging flexibility is going to be crucial."
Guy Fighel
GVP of Product Engineering @ New Relic
"Pricing is hard. It requires product and corporate infrastructure and a lot of experimentation before you get it right. If you are not using Stigg - you are probably leaving money on the table."
Nir Nahum
CTO @ WalkMe
"Packaging and pricing is literally the core of a company's growth strategy. But there's a gap today between monetization flexibility and execution. Thanks to Stigg we can finally solve that missing link."
Daniel Kish
Director of Pricing & Packaging Strategy @ Gong
"Amazing tool that can accelerate payment rollout for any company. It's simple yet flexible and fits any use case we wanted to test. Help us get better understanding and control in building our pricing model."
Nimrod Popper
Co-Founder & CTO @ Tolstoy
"The customer buying experience is a key part of the overall product experience - Stigg is going to help companies deliver exceptional buying experiences via increased agility & experimentation."
Divy Goel
Monetization @ Grafana
"Frequent changes in pricing & packaging are crucial for high-growth SaaS companies. We need a better way to implement iterations than occupying our R&D teams and slowing down product innovations."
Ofer Smadari
CEO @ Torq
"One of the most overlooked yet critical levers in business growth is pricing & packaging. But executing change is hard and slow. This is where Stigg comes in increasing speed of execution and evolving pricing into an iterative process."
Fessal Rahman
VP Global Monetization, Ex-Cloudinary
"Managing Pricing and Packaging has long been a source of frustration for companies large and small. Stigg offers a solution to help companies embrace Product Lead Growth and increase value realization."
Sam Lee
Director of Pricing & Monetization @ Snowflake
"Stigg is a true game changer for monetization teams! By unlocking 'commercial agility' through Packaging & Pricing. Finding the right price model no longer means compromises, months of implementation, and dependencies on scarce engineering resources."
Manuel Litz
Advisor, Ex-Contentful, Ex-Simon-Kucher

Launch new pricing

Start now