Skip to content
GitHubXDiscord

PortalConfiguration

The PortalConfiguration resource lets you create and manage Stripe Customer Portal Configurations for customizing the customer portal experience.

Create a basic portal configuration:

import { PortalConfiguration } from "alchemy/stripe";
const basicPortal = await PortalConfiguration("basic-portal", {
businessProfile: {
headline: "Manage your subscription",
privacyPolicyUrl: "https://example.com/privacy",
termsOfServiceUrl: "https://example.com/terms",
},
features: {
invoiceHistory: { enabled: true },
paymentMethodUpdate: { enabled: true },
},
});

Create a portal with subscription management features:

import { PortalConfiguration } from "alchemy/stripe";
const subscriptionPortal = await PortalConfiguration("subscription-portal", {
defaultReturnUrl: "https://example.com/account",
features: {
subscriptionCancel: {
enabled: true,
mode: "at_period_end",
prorationBehavior: "none",
},
subscriptionUpdate: {
enabled: true,
defaultAllowedUpdates: ["price", "quantity"],
prorationBehavior: "create_prorations",
},
},
});

Create a full-featured portal configuration:

import { PortalConfiguration } from "alchemy/stripe";
const fullPortal = await PortalConfiguration("full-portal", {
businessProfile: {
headline: "Manage your Acme Corp subscription",
privacyPolicyUrl: "https://acme.com/privacy",
termsOfServiceUrl: "https://acme.com/terms",
},
defaultReturnUrl: "https://acme.com/dashboard",
features: {
customerUpdate: {
enabled: true,
allowedUpdates: ["email", "address", "shipping", "phone", "tax_id"],
},
invoiceHistory: { enabled: true },
paymentMethodUpdate: { enabled: true },
subscriptionCancel: {
enabled: true,
mode: "immediately",
cancellationReason: {
enabled: true,
options: ["too_expensive", "missing_features", "switched_service"],
},
},
},
});