Skip to main content
An asset defines the unit of value participants earn and spend. Points, cashback dollars, hotel nights, referral credits, promotional tokens. Each asset has its own ledger, and every credit has a corresponding debit somewhere in the system. Three settings define how an asset behaves: inventory mode, issuance policy, and scale. All three are set at creation and cannot be changed afterward.

Creating an Asset

Assets are created at the organization level and automatically linked to the specified program. They can be shared across programs.

Inventory Mode

Choose SIMPLE only when the balance can be treated as one pool. It cannot later answer which program, campaign, partner, or credit issued the value that was redeemed. Choose LOT when individual units of value carry meaning. For example, an airline program where points expire 18 months after they’re earned should use LOT; each credit creates a lot with its own expires_at, and expired lots are automatically excluded when the participant spends. A fixed budget alone does not require LOT: either mode works with PREFUNDED issuance. See Lots & Expiration for more on how lots work.

Issuance Policy

Most programs start with UNLIMITED. Use PREFUNDED when you have a hard cap, like a “$50,000 Summer Promo” where the program wallet is funded once and credits stop when it’s empty. See Programs for how to fund and burn.

Scale

The number of decimal places for all amounts on this asset. Any value from 0 to 18. How extra decimal places are handled depends on where the amount comes from. Amounts computed by rules (CEL expressions in CREDIT, DEBIT, and other actions) are rounded half-up to fit the scale: crediting "1.009" on an asset with scale: 2 records "1.01". Use the round() function in CEL expressions when you need explicit control over precision. Amounts you pass directly to the balance endpoints (adjust, hold, release, forfeit) are not rounded: a value with more decimal places than the scale is rejected with a 400 (invalid_scale). See Balance Operations.
Working in cents: If your issuer-processor sends amounts in minor units (smallest currency denomination, e.g., 200 = $2.00), use scale: 0 and treat the asset as cents. Your application handles the display conversion. Alternatively, use scale: 2 and pass dollar amounts directly.

Examples

The table below shows common asset configurations.

Asset Sharing

Assets can be linked to multiple programs. This lets participants earn the same asset across different campaigns.
When using PREFUNDED assets, each program maintains its own wallet balance independently. Funding one program doesn’t affect another. If a shared asset needs issuer attribution for cross-program settlement, create it as LOT. SIMPLE shared balances can still report total redemptions by channel, but they cannot reconstruct which program originally issued the redeemed value. For example, a member earns 100 points through Program A and 50 points through Program B, then redeems 120 points through Program B. With LOT, redemption attribution can report 100 points issued by Program A and 20 issued by Program B, all redeemed through Program B. With SIMPLE, the report can show 120 points redeemed through Program B, but the original issuer split is no longer available.

Updating Assets

You can update name and max_transaction_amount, and set status to ARCHIVED to permanently retire the asset. symbol, inventory_mode, issuance_policy, and scale are locked after creation.
Set max_transaction_amount to null to remove the ceiling.