std/build/billing
std/build/billing
Type Aliases
BillingCatalogue
type BillingCatalogue = Schema.Schema.Type<typeof BillingCatalogueSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:150
BillingCatalogueInterval
type BillingCatalogueInterval = Schema.Schema.Type<typeof BillingCatalogueIntervalSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:12
BillingCataloguePlan
type BillingCataloguePlan = Schema.Schema.Type<typeof BillingCataloguePlanSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:83
BillingCataloguePrice
type BillingCataloguePrice = Schema.Schema.Type<typeof BillingCataloguePriceSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:71
BillingCataloguePriceModel
type BillingCataloguePriceModel = Schema.Schema.Type<typeof BillingCataloguePriceModelSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:14
BillingCatalogueProduct
type BillingCatalogueProduct = Schema.Schema.Type<typeof BillingCatalogueProductSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:115
BillingCatalogueProviderPriceIds
type BillingCatalogueProviderPriceIds = Schema.Schema.Type<typeof BillingCatalogueProviderPriceIdsSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:49
BillingCatalogueTier
type BillingCatalogueTier = Schema.Schema.Type<typeof BillingCatalogueTierSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:42
BillingProviderEnvironment
type BillingProviderEnvironment = Schema.Schema.Type<typeof BillingProviderEnvironmentSchema>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:44
Variables
AI_METERED_PRICES
const AI_METERED_PRICES: readonly [{
checkout: true;
description: "Provider-reported request cost converted from USD to micro-SGD at the published billing rate, which loads provider credit fees, FX, payment processing and margin onto the conversion. Token counts and model remain attached to every event for audit.";
id: "ai-provider-cost-micros-monthly";
interval: "month";
meterId: "bolt_ai_cost_sgd_micros_v1";
model: "metered";
name: "AI usage";
stripePriceIds: {
production: "price_1TyCvvLlQVSVzCBMS9rUyU0V";
sandbox: "price_1Ty8XqLvWjJB44nUyTvOAuYp";
};
unitAmountDecimal: "0.0001";
}];Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:175
AI_USAGE_METER_ID
const AI_USAGE_METER_ID: "bolt_ai_cost_sgd_micros_v1" = "bolt_ai_cost_sgd_micros_v1";Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:15
BILLING_CURRENCY
const BILLING_CURRENCY: "SGD";Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:2
BillingCatalogueIntervalSchema
const BillingCatalogueIntervalSchema: Schema.Literals<readonly ["month", "year"]>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:11
The Stripe catalogue surfaces (plans, prices, products) are declared here without a transport dependency, with the shape owned once by these schemas — a host that pushes the catalogue to Stripe decodes from the same source of truth the type is derived from.
BillingCataloguePlanSchema
const BillingCataloguePlanSchema: Schema.Struct<{
allowPromotionCodes: Schema.Boolean;
id: Schema.String;
trialDays: Schema.Number;
}>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:78
A plan is the base subscription: a flat fee plus the metered prices in the same product. The paywall checkout subscribes the plan plus every metered price as separate subscription items, so what a plan names is the trial, not seat licensing. There is no seat model: the base fee is stated once per workspace, whatever the headcount.
BillingCataloguePriceModelSchema
const BillingCataloguePriceModelSchema: Schema.Literals<readonly ["flat", "per_seat", "metered"]>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:13
BillingCataloguePriceSchema
const BillingCataloguePriceSchema: Schema.Struct<{
amount: Schema.optional<Schema.String>;
checkout: Schema.Boolean;
description: Schema.String;
dimensions: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
id: Schema.String;
interval: Schema.Literals<readonly ["month", "year"]>;
meterId: Schema.optional<Schema.String>;
model: Schema.Literals<readonly ["flat", "per_seat", "metered"]>;
name: Schema.String;
stripePriceIds: Schema.Struct<{
production: Schema.NullishOr<Schema.String>;
sandbox: Schema.NullishOr<Schema.String>;
}>;
tiers: Schema.optional<Schema.$Array<Schema.Struct<{
amount: Schema.String;
upTo: Schema.Union<readonly [Schema.Number, Schema.Literal<"inf">]>;
}>>>;
tiersMode: Schema.optional<Schema.Literals<readonly ["graduated", "volume"]>>;
unitAmountDecimal: Schema.optional<Schema.String>;
}>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:50
BillingCatalogueProductSchema
const BillingCatalogueProductSchema: Schema.Struct<{
description: Schema.String;
id: Schema.String;
name: Schema.String;
plans: Schema.$Array<Schema.Struct<{
allowPromotionCodes: Schema.Boolean;
id: Schema.String;
trialDays: Schema.Number;
}>>;
prices: Schema.$Array<Schema.Struct<{
amount: Schema.optional<Schema.String>;
checkout: Schema.Boolean;
description: Schema.String;
dimensions: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
id: Schema.String;
interval: Schema.Literals<readonly ["month", "year"]>;
meterId: Schema.optional<Schema.String>;
model: Schema.Literals<readonly ["flat", "per_seat", "metered"]>;
name: Schema.String;
stripePriceIds: Schema.Struct<{
production: Schema.NullishOr<Schema.String>;
sandbox: Schema.NullishOr<Schema.String>;
}>;
tiers: Schema.optional<Schema.$Array<Schema.Struct<{
amount: Schema.String;
upTo: Schema.Union<readonly ...>;
}>>>;
tiersMode: Schema.optional<Schema.Literals<readonly ["graduated", "volume"]>>;
unitAmountDecimal: Schema.optional<Schema.String>;
}>>;
}>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:84
BillingCatalogueProviderPriceIdsSchema
const BillingCatalogueProviderPriceIdsSchema: Schema.Struct<{
production: Schema.NullishOr<Schema.String>;
sandbox: Schema.NullishOr<Schema.String>;
}>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:45
BillingCatalogueSchema
const BillingCatalogueSchema: Schema.Struct<{
currency: Schema.Literal<"SGD">;
products: Schema.$Array<Schema.Struct<{
description: Schema.String;
id: Schema.String;
name: Schema.String;
plans: Schema.$Array<Schema.Struct<{
allowPromotionCodes: Schema.Boolean;
id: Schema.String;
trialDays: Schema.Number;
}>>;
prices: Schema.$Array<Schema.Struct<{
amount: Schema.optional<Schema.String>;
checkout: Schema.Boolean;
description: Schema.String;
dimensions: Schema.optional<Schema.$Record<Schema.String, Schema.String>>;
id: Schema.String;
interval: Schema.Literals<readonly [..., ...]>;
meterId: Schema.optional<Schema.String>;
model: Schema.Literals<readonly [..., ..., ...]>;
name: Schema.String;
stripePriceIds: Schema.Struct<{
production: Schema.NullishOr<...>;
sandbox: Schema.NullishOr<...>;
}>;
tiers: Schema.optional<Schema.$Array<Schema.Struct<...>>>;
tiersMode: Schema.optional<Schema.Literals<readonly ...>>;
unitAmountDecimal: Schema.optional<Schema.String>;
}>>;
}>>;
}>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:116
BillingCatalogueTierSchema
const BillingCatalogueTierSchema: Schema.Struct<{
amount: Schema.String;
upTo: Schema.Union<readonly [Schema.Number, Schema.Literal<"inf">]>;
}>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:38
BillingProviderEnvironmentSchema
const BillingProviderEnvironmentSchema: Schema.Literals<readonly ["sandbox", "production"]>;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:43
CURRENCY_MINOR_UNITS_PER_MAJOR_UNIT
const CURRENCY_MINOR_UNITS_PER_MAJOR_UNIT: 100 = 100;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:4
DEFAULT_BILLING_TRIAL_DAYS
const DEFAULT_BILLING_TRIAL_DAYS: 30 = 30;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:3
LATEST_CATALOGUE
const LATEST_CATALOGUE: object;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:267
Type Declaration
currency
readonly currency: "SGD";
products
readonly products: readonly [{
description: "A flat base fee per workspace, plus separately metered compute, disc, files, and AI usage.";
id: "platform";
name: "Norbital Platform";
plans: readonly [{
allowPromotionCodes: true;
id: "platform";
trialDays: 30;
}];
prices: readonly [{
amount: "10.00";
checkout: true;
description: "SGD 10.00 per workspace per month, flat — unchanged by headcount or usage.";
id: "platform-base-monthly";
interval: "month";
model: "flat";
name: "Workspace base";
stripePriceIds: {
production: null;
sandbox: "price_1U97ONLvWjJB44nUrKDVveY3";
};
}, {
checkout: true;
description: "SGD 0.0005 per worker-thread ELU active second. Memory infrastructure cost is included in the price; memory is not separately metered or hard-walled per worker. Stripe records milliseconds.";
id: "compute-second-monthly";
interval: "month";
meterId: "bolt_compute_seconds_v1";
model: "metered";
name: "Compute usage";
stripePriceIds: {
production: "price_1U5gPrLlQVSVzCBMefEfyUnM";
sandbox: "price_1U5gO4LvWjJB44nUCUzkwD61";
};
unitAmountDecimal: string;
}, {
checkout: true;
description: "SGD 3.00 per GB-month for tenant database storage, measured in GB-hours.";
id: "disc-gb-hour-monthly";
interval: "month";
meterId: "bolt_disc_gb_hours_v1";
model: "metered";
name: "Disc usage";
stripePriceIds: {
production: "price_1U5gPrLlQVSVzCBM3ctzic6b";
sandbox: "price_1U5gOQLvWjJB44nUkHqcqjGn";
};
unitAmountDecimal: string;
}, {
checkout: true;
description: "SGD 0.25 per GB-month for tenant object storage, measured in GB-hours.";
id: "files-gb-hour-monthly";
interval: "month";
meterId: "bolt_files_gb_hours_v1";
model: "metered";
name: "Files usage";
stripePriceIds: {
production: "price_1U5gPsLlQVSVzCBMHKfK5Ker";
sandbox: "price_1U5gORLvWjJB44nUzycz1ITJ";
};
unitAmountDecimal: string;
}, {
checkout: true;
description: "Provider-reported request cost converted from USD to micro-SGD at the published billing rate, which loads provider credit fees, FX, payment processing and margin onto the conversion. Token counts and model remain attached to every event for audit.";
id: "ai-provider-cost-micros-monthly";
interval: "month";
meterId: "bolt_ai_cost_sgd_micros_v1";
model: "metered";
name: "AI usage";
stripePriceIds: {
production: "price_1TyCvvLlQVSVzCBMS9rUyU0V";
sandbox: "price_1Ty8XqLvWjJB44nUyTvOAuYp";
};
unitAmountDecimal: "0.0001";
}];
}];LATEST_CATALOGUE_PLANS
const LATEST_CATALOGUE_PLANS: readonly BillingCataloguePlan[];Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:266
LATEST_CATALOGUE_PRICES
const LATEST_CATALOGUE_PRICES: readonly BillingCataloguePrice[];Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:264
LATEST_CATALOGUE_PRODUCTS
const LATEST_CATALOGUE_PRODUCTS: readonly [{
description: "A flat base fee per workspace, plus separately metered compute, disc, files, and AI usage.";
id: "platform";
name: "Norbital Platform";
plans: readonly [{
allowPromotionCodes: true;
id: "platform";
trialDays: 30;
}];
prices: readonly [{
amount: "10.00";
checkout: true;
description: "SGD 10.00 per workspace per month, flat — unchanged by headcount or usage.";
id: "platform-base-monthly";
interval: "month";
model: "flat";
name: "Workspace base";
stripePriceIds: {
production: null;
sandbox: "price_1U97ONLvWjJB44nUrKDVveY3";
};
}, {
checkout: true;
description: "SGD 0.0005 per worker-thread ELU active second. Memory infrastructure cost is included in the price; memory is not separately metered or hard-walled per worker. Stripe records milliseconds.";
id: "compute-second-monthly";
interval: "month";
meterId: "bolt_compute_seconds_v1";
model: "metered";
name: "Compute usage";
stripePriceIds: {
production: "price_1U5gPrLlQVSVzCBMefEfyUnM";
sandbox: "price_1U5gO4LvWjJB44nUCUzkwD61";
};
unitAmountDecimal: string;
}, {
checkout: true;
description: "SGD 3.00 per GB-month for tenant database storage, measured in GB-hours.";
id: "disc-gb-hour-monthly";
interval: "month";
meterId: "bolt_disc_gb_hours_v1";
model: "metered";
name: "Disc usage";
stripePriceIds: {
production: "price_1U5gPrLlQVSVzCBM3ctzic6b";
sandbox: "price_1U5gOQLvWjJB44nUkHqcqjGn";
};
unitAmountDecimal: string;
}, {
checkout: true;
description: "SGD 0.25 per GB-month for tenant object storage, measured in GB-hours.";
id: "files-gb-hour-monthly";
interval: "month";
meterId: "bolt_files_gb_hours_v1";
model: "metered";
name: "Files usage";
stripePriceIds: {
production: "price_1U5gPsLlQVSVzCBMHKfK5Ker";
sandbox: "price_1U5gORLvWjJB44nUzycz1ITJ";
};
unitAmountDecimal: string;
}, {
checkout: true;
description: "Provider-reported request cost converted from USD to micro-SGD at the published billing rate, which loads provider credit fees, FX, payment processing and margin onto the conversion. Token counts and model remain attached to every event for audit.";
id: "ai-provider-cost-micros-monthly";
interval: "month";
meterId: "bolt_ai_cost_sgd_micros_v1";
model: "metered";
name: "AI usage";
stripePriceIds: {
production: "price_1TyCvvLlQVSVzCBMS9rUyU0V";
sandbox: "price_1Ty8XqLvWjJB44nUyTvOAuYp";
};
unitAmountDecimal: "0.0001";
}];
}];Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:189
PLATFORM_BASE_SGD_PER_MONTH
const PLATFORM_BASE_SGD_PER_MONTH: number;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:174
The flat base fee in major units — the catalogue amount, not a second literal beside it.
PLATFORM_FLAT_PRICES
const PLATFORM_FLAT_PRICES: readonly [{
amount: "10.00";
checkout: true;
description: "SGD 10.00 per workspace per month, flat — unchanged by headcount or usage.";
id: "platform-base-monthly";
interval: "month";
model: "flat";
name: "Workspace base";
stripePriceIds: {
production: null;
sandbox: "price_1U97ONLvWjJB44nUrKDVveY3";
};
}];Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:160
The flat platform fee, per workspace, per month, as a real Stripe price. Checkout subscribes it
as line_items[0] with the metered prices after it, so the base is invoiced on the same
subscription as the usage it gates. amount is major units, the figure the pricing page reads.
PLATFORM_PRODUCT_ID
const PLATFORM_PRODUCT_ID: "platform" = "platform";Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:5
USAGE_METER_IDS
const USAGE_METER_IDS: object;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:16
Type Declaration
ai
readonly ai: "bolt_ai_cost_sgd_micros_v1";
compute
readonly compute: "bolt_compute_seconds_v1";
disc
readonly disc: "bolt_disc_gb_hours_v1";
files
readonly files: "bolt_files_gb_hours_v1";USAGE_METER_UNITS
const USAGE_METER_UNITS: object;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:22
Type Declaration
ai
readonly ai: "micro-SGD";
compute
readonly compute: "millisecond";
disc
readonly disc: "micro-GB-hour";
files
readonly files: "micro-GB-hour";Functions
aiProviderCostSgdMicros()
function aiProviderCostSgdMicros(providerCostUsd): number;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:37
What a tenant owes for one turn, in micro-SGD, given what the provider charged for it in USD.
The single conversion for AI spend: the ledger prices an observation with it, the Stripe meter reports the quantity it returns, and the agent panel shows a conversation's total through it. There used to be three — a factored one here that nothing called, and the same literal written out twice more where the meter actually ran — so the published rate and the billed rate could differ with nothing in the code to say which one was the price.
Parameters
| Parameter | Type |
|---|---|
providerCostUsd |
number |
Returns
number
calculateCatalogueMeterCostSgdMicros()
function calculateCatalogueMeterCostSgdMicros(meterId, quantity): number;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:265
Parameters
| Parameter | Type |
|---|---|
meterId |
string |
quantity |
number |
Returns
number
formatBillingAmountFromMinorUnits()
function formatBillingAmountFromMinorUnits(amountMinorUnits, options?): string;Defined in: apps/website/.api-docs-entry/std/build/billing/index.d.ts:151
Parameters
| Parameter | Type |
|---|---|
amountMinorUnits |
string | number |
options? |
{ maximumFractionDigits?: number; minimumFractionDigits?: number; } |
options.maximumFractionDigits? |
number |
options.minimumFractionDigits? |
number |
Returns
string
References
AI_SGD_PER_PROVIDER_USD
Re-exports AI_SGD_PER_PROVIDER_USD
BILLING_ACCESS_TIERS
Re-exports BILLING_ACCESS_TIERS
BILLING_RATE_CARD_VERSION
Re-exports BILLING_RATE_CARD_VERSION
BillingAccessTier
Re-exports BillingAccessTier
COMPUTE_SGD_PER_SECOND
Re-exports COMPUTE_SGD_PER_SECOND
DISC_SGD_PER_GB_MONTH
Re-exports DISC_SGD_PER_GB_MONTH
EXTERNAL_CLOUD_RATE_CARD_USD
Re-exports EXTERNAL_CLOUD_RATE_CARD_USD
FILES_SGD_PER_GB_MONTH
Re-exports FILES_SGD_PER_GB_MONTH
HOURS_PER_BILLING_MONTH
Re-exports HOURS_PER_BILLING_MONTH
LOCAL_CLOUD_RATE_CARD
Re-exports LOCAL_CLOUD_RATE_CARD