Productize
This tool automates the process of creating Stripe products and prices, and generates a TypeScript file with the corresponding IDs for easy reference in your codebase.
Installation
npm install -g productize
bun add -g productize
Usage
CLI
You can use this tool directly from the command line:
// load the secret key from the environment
export STRIPE_SECRET_KEY=sk_your_stripe_secret_key
bun add -g productize
productize [input-file] [output-file]
Or instantly run with bunx:
STRIPE_SECRET_KEY=your_stripe_secret_key bunx productize [input-file] [output-file]
input-file: Path to your JSON file with product data (default: products.json)
output-file: Path where the TypeScript file will be generated (default: products.ts)
Programmatic Usage
You can also use this tool programmatically in your Node.js/Bun/Deno projects:
import { bootstrapStripeProducts } from 'productize';
await bootstrapStripeProducts({
stripeSecretKey: 'your_stripe_secret_key',
inputFilePath: 'path/to/your/products.json',
outputFilePath: 'path/to/output/products.ts'
});
console.log('Stripe products bootstrapped successfully.');
Or without top-level await / import:
require('productize').bootstrapStripeProducts({
stripeSecretKey: 'your_stripe_secret_key',
inputFilePath: 'path/to/your/products.json',
outputFilePath: 'path/to/output/products.ts'
}).then(() => console.log('Stripe products bootstrapped successfully'));
Input File Format
Your products input JSON file should have the following structure:
[
{
"name": "Basic Plan",
"description": "Basic features for individuals",
"prices": [
{
"name": "Monthly",
"unit_amount": 999,
"currency": "usd",
"recurring": {
"interval": "month"
}
},
{
"name": "Yearly",
"unit_amount": 9990,
"currency": "usd",
"recurring": {
"interval": "year"
}
}
]
},
]
Output
The tool will generate a TypeScript file with SNAKE_CASE constants for your Stripe products and prices:
export const STRIPE_PRODUCTS = {
BASIC_PLAN: {
ID: 'prod_Qc1gQZpb89FTYN',
PRICES: {
MONTHLY: {
ID: 'price_1PkndDBUsi1mfR0LbGg1Nwtk',
AMOUNT: '$9.99 USD',
},
YEARLY: {
ID: 'price_1PkndEBUsi1mfR0L3qMxfCMh',
AMOUNT: '$99.90 USD',
},
},
},
};
Best Practices
- Keep the generated TypeScript file in version control, but don't edit it manually.
- Run this tool in your CI/CD pipeline or during deployment to ensure Stripe product IDs and attributes are up-to-date.
- Use environment-specific
STRIPE_SECRET_KEYs to separate test and live mode data.
Contributing
Issues, pull requests, and forks are welcome, but this free side project may become unmaintained at any time.
License
MIT