@usethrottle/discounts
v0.2.1
Published
Headless TypeScript client for Throttle discount and promotion code APIs.
Readme
@usethrottle/discounts
Headless TypeScript client for Throttle discount codes.
Use it from your server, API routes, server actions, or backend jobs. The SDK does not ship checkout UI because promotion code fields need to match each storefront's cart and checkout experience.
Install
npm install @usethrottle/discountsPreview a Code
import { DiscountsClient } from '@usethrottle/discounts';
const discounts = new DiscountsClient({
apiKey: process.env.THROTTLE_API_KEY!,
});
const preview = await discounts.preview({
code: 'SUMMER25',
currency: 'USD',
subtotal: 10000,
customerId: 'cust_123',
});
if (preview.valid) {
console.log(preview.discountTotal); // 2500
}Apply a Code to a Cart
const cart = await discounts.applyToCart('cart_123', 'SUMMER25');Remove a Code from a Cart
const cart = await discounts.removeFromCart('cart_123');Create a Discount
await discounts.create({
code: 'SUMMER25',
name: 'Summer 25% off',
type: 'percentage',
value: 25,
conditions: { minOrder: 5000 },
maxRedemptionsPerCustomer: 1,
metadata: {
campaign: 'summer-2026',
channel: 'email',
},
});
await discounts.create({
code: 'FIVE-OFF',
name: '$5 off',
type: 'fixed_amount',
value: 500,
});Throttle supports only percentage and fixed_amount discounts. value is a
whole percent for percentage discounts and minor currency units for fixed
amount discounts.
maxRedemptionsPerCustomer defaults to 1. Set it to another integer for
repeat customer use, or null for unlimited customer redemptions. Redemption
usage is counted when a discounted cart becomes an order.
API Key Safety
This package sends X-API-Key to the Throttle API. Use it from a trusted server
environment only. Browser checkout UIs should call your own API route or server
action, then your server can use this package.
