Built for the PayPal AI Hackathon

The Agentic Access & Offer SDK for your app

Self-host your own entitlements, access and offers that secure your app and give you the freedom to experiment and grow your revenue.

Dylan Jones

Dylan Jones

Creator of OfferSDK.com

Own the code that decides who gets what. One click puts it on your Render account.

API. The entitlement and offer engine.

One call returns everything an account can use, with plans, add-ons, incentives and offers merged into features and limits. Checkout runs through PayPal.

Admin App. Control, analytics and insights.

Change plans, limits and offers without a deploy. See usage per account and feature, run cancel flows, and approve what the agent proposes.

React SDK. Integrate and lock down your app.

Wrap your app in the provider and gate features where they live. Paywalls, checkout and cancel flows read straight from the API, so access matches what each account paid for.

Every deal you say yes to ends up in your code. And the next one sends you back to billing.ts.

“Sorry, I can't do that.”Plans hardcoded in your app
billing.ts
if (user.plan === "pro" || user.plan === "team") {
  enableExports();
}
if (user.id === "acme_corp") {
  // custom deal, ask Dave
  seats = 50;
  enableSso();
}
if (promo === "BF24" && Date.now() < BF_END) {
  price = 199;
}
// TODO: affiliate bundles???
“Sold.”Plans and deals stored in Offer SDK
billing.ts
const exports = useEntitlement("exports");
const seats = useEntitlement("seats");

// Plans, custom deals, promos and partner
// bundles all live in the dashboard.

Custom plan for AcmeBF24 promo, ends SundayBundle for @sarahbuilds

An agent that fights churn for you. It sees what each account uses and makes the offer that keeps them, right at the cancel button.

One call returns everything an account can use

Plan, offer extras and incentives, merged into one list of features and limits.

GET/apps/app_123/namespaces/acct_42/full-plan200 · 38ms
{
  "plan": "pro",
  "offer": "spring_launch",
  "entitlements": {
    "exports": true,
    "seats": { "limit": 10, "used": 4 },
    "ai_credits": { "limit": 5000, "used": 4120 }
  },
  "incentive": { "percent_off": 20, "cycles_left": 2 }
}

The admin app you host. Manage your plans, offers and accounts in one place.

The Overview page of the Offer SDK dashboard
The Analytics page of the Offer SDK dashboard
The Agent page of the Offer SDK dashboard
The Offers page of the Offer SDK dashboard
The Cancel flow page of the Offer SDK dashboard
The Plans page of the Offer SDK dashboard
The Entitlements page of the Offer SDK dashboard
The Add-ons page of the Offer SDK dashboard
The Incentives page of the Offer SDK dashboard
The Accounts page of the Offer SDK dashboard
The Integration page of the Offer SDK dashboard
The API reference page of the Offer SDK dashboard
The MCP server page of the Offer SDK dashboard
The Webhooks page of the Offer SDK dashboard
The App settings page of the Offer SDK dashboard

Your app at a glance. Accounts by plan, active incentives and 30 days of usage on one page.

Funnels, partner deals and promos. Launch each one from the dashboard.

Funnels with bumps, upsells and downsells. Each step grants its own features, credits or add-ons. Change a step in the dashboard and the next buyer gets the new access.

  1. Front-end offer$29/mo

    Pro plan

    Pro features · 1,000 credits

  2. Order bump+$19

    Resource pack

    Templates add-on · Instant delivery

  3. Upsell$249/yr

    Go yearly

    2 months free · +2,000 credits

  4. Downsell$9/mo

    Starter

    Core features · 200 credits

Upsells at the limit

When an account runs low on credits, show the next plan up and take payment through PayPal.

Upgrade shown at 90% of credits

Churn saves

Give more instead of discounting. Add credits or seats the moment someone clicks cancel.

+500 credits and 5 seats granted

Partner bundles

Make a bundle for one partner. Buyers from their link are credited to them and get access on their own.

offer.to/sarah · auto-credited

Time-limited promos

Launch a Black Friday price with an end date. When it passes, the link stops selling and there's no code to clean up.

BF24 ends Sunday at midnight

Pricing tests

Put two packages on two links and compare how many buyers check out on each.

A · Pro $29B · Pro + credits $35

Everything you sell, built from five pieces. Change one in the dashboard, no deploy needed.

Plans

The tiers that set a customer's baseline. Every account always sits on one core plan.

Offers

One or more plans with their prices, order bumps and extra entitlements, behind one link that checks out with PayPal.

Entitlements

The features and limits a plan unlocks, resolved into one answer your app can check.

Add-ons

Extra features or capacity that snap onto any plan, without minting a new tier.

Incentives

Discounts, trials and grants applied on top of a plan, for a set time or number of cycles.

One checkout page for every offer. Built from SDK components, styled like your app.

Every link carries its own offer, and the server re-checks each price before it reaches PayPal.

  1. Set up your plans and entitlements in the dashboard.
  2. Wrap your app in the provider and read what each account can use.
  3. Send buyers to offer links that check out through PayPal.
app/checkout/page.tsx
import { OfferProvider, Offer } from "offer-sdk/checkout";

export default function Checkout({ searchParams }) {
  return (
    <OfferProvider appId="app_123" offerId={searchParams.offer}>
      <Offer.Headline />
      <Offer.IntervalToggle />
      <Offer.Plans>{(plan) => <Offer.Plan plan={plan} />}</Offer.Plans>
      <Offer.Bumps>{(bump) => <Offer.Bump bump={bump} />}</Offer.Bumps>
      <Offer.Summary />
      <Offer.Checkout />
    </OfferProvider>
  );
}