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
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