Skip to content

Raise my price

Say "raise the price to $39 for new customers" and get a new Offer at $39 while every existing customer keeps paying $29.

For developers

A new Price is a new Offer. The old one is withdrawn, closed to new customers, and every Subscription on it keeps its price until you move it.

For developers

Needs Charge monthly · Open a bank account

What you get

  • 1Offer at $39 a month on the pricing page and checkoutOffer
  • 1withdrawn $29 Offer, closed to new customersOffer
  • 1Subscription per existing customer, unchanged at $29Subscription

Your agent does

Offer.create → Offer.publish → Offer.withdraw
You, to your agent

Raise Pro to $39 for new customers.

Change my price.

Put the price up but keep current customers where they are.

# 1. Offer.create
OFFER=$(curl -X POST https://api.sb/leaseline.app/offers \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"price":{"amount":39,"currency":"USD"},"interval":"month","terms":"Monthly, billed in advance. Cancel any time from the billing portal."}' | jq -r '.offer["$id"] | split("/") | last')

# 2. Offer.publish
curl -X POST https://api.sb/leaseline.app/offers/$OFFER/publish \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"

# 3. Offer.withdraw
curl -X POST https://api.sb/leaseline.app/offers/offer_pro_monthly/withdraw \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
import { $ } from 'startup-builder'

const offer = await $.Offer.create({ price: { amount: 39, currency: 'USD' }, interval: 'month', terms: 'Monthly, billed in advance. Cancel any time from the billing portal.' })
await $.Offer.publish({ offer: offer.$id })
await $.Offer.withdraw({ offer: 'offer_pro_monthly' })
OFFER=$(npx startup-builder do Offer.create --json '{"price":{"amount":39,"currency":"USD"},"interval":"month","terms":"Monthly, billed in advance. Cancel any time from the billing portal."}' | jq -r '.offer["$id"] | split("/") | last')
npx startup-builder do Offer.publish --json '{"offer":"'"$OFFER"'"}'
npx startup-builder do Offer.withdraw --json '{"offer":"offer_pro_monthly"}'
{
  "name": "do",
  "arguments": {
    "code": "const offer = await $.Offer.create({ price: { amount: 39, currency: 'USD' }, interval: 'month', terms: 'Monthly, billed in advance. Cancel any time from the billing portal.' })\nawait $.Offer.publish({ offer: offer.$id })\nreturn await $.Offer.withdraw({ offer: 'offer_pro_monthly' })"
  }
}

Change it

  • Move existing customers too, after 30 days of notice.
  • Keep the old price for customers who signed up before June.
  • Test $39 in Canada first.

Under the hood

Systems
Billing
Nouns
Offer, Price, Subscription
Events
Offer.created, Offer.published, Offer.withdrawn
Stripe objects
Product, Price