fix(billing): use live Stripe price for Signed BAA - #2139
Merged
Conversation
The production entry was still the price_REPLACE_BEFORE_PRODUCTION placeholder, so getBaaPriceId threw before any Stripe or DB work and every Sign & Pay attempt on cap.so returned a 500.
|
🚨 Contributor flagged. Click here for more info: Superagent Dashboard |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Clicking Sign & pay $99/mo on
/dashboard/settings/organization/billingin production returned a 500 (digest: '2637639230'). Vercel production logs ondpl_49f6z9nTsFhXeHmdq7feViMMZUnpshow:STRIPE_SIGNED_BAA_PRICE_IDS.productionwas stillprice_REPLACE_BEFORE_PRODUCTION, so the.includes("REPLACE")guard ingetBaaPriceId()threw on every attempt. No live Stripe price for the add-on existed.Fix
Created the live Stripe product/price and wired its ID in:
prod_V6OxWdGuyj9HKp("Signed BAA",metadata.type=signed_baa)price_1U6C99FJxA1XpeSsUg1rXHo2— $99/mo recurring, withcurrency_optionsfor usd / gbp / eur at 9900 each, mirroring how the live Cap Pro price is configured. Without the currency options, customers whose Stripe currency is locked to GBP or EUR would hit a currency mismatch on subscribe.Blast radius
The throw happened before any write, so nothing needs cleaning up: the
signed_baastable has zero rows and nosigned_baasubscription or charge exists in Stripe.Webhook handling was already correct for this path —
isSignedBaaSubscriptionguards thecustomer.subscription.created/updated/deletedhandlers, so the add-on subscription cannot overwriteusers.stripeSubscriptionId/Statusor inflate the seat quota.Verification
vitest run __tests__/unit/signed-baa.test.ts __tests__/unit/signed-baa-webhook.test.ts— 16/16 pass (tests mockVERCEL_ENV: "development", so they exercise the dev price and are unaffected)biome check packages/utils/src/constants/plans.ts— cleanexpand[]=currency_optionsto confirm all three currencies landed at 9900Greptile Summary
Replaces the Signed BAA production placeholder with the configured live Stripe price so production checkout can proceed.
price_1U6C99FJxA1XpeSsUg1rXHo2.Confidence Score: 5/5
The PR appears safe to merge with no repository-visible blocking or non-blocking issues.
The production Signed BAA checkout now receives a concrete price identifier instead of the placeholder that caused the configuration guard to reject every request.
Important Files Changed
Reviews (1): Last reviewed commit: "fix(billing): use live Stripe price for ..." | Re-trigger Greptile