Request purchase limits

Cap how many units a single buyer can purchase within a set time window, enforced in real time at checkout.

Purchase Limits lets you cap the number of units a single buyer can purchase across a set of products within a configurable time window. FastSpring's risk engine enforces the limit in real time at checkout. You don't need to change any code, and buyers can't bypass the limit by opening multiple browser sessions, tabs, or carts at the same time.

Purchase Limits isn't self-serve yet, and three roles are involved: you decide the rule's settings and request it, your FastSpring account team builds and maintains the rule, and, if you track by Player ID, your developers add a few lines of code to send the buyer identifier at checkout. To request a rule, see Getting set up below.

Why use purchase limits

Gaming and seasonal content

Cap how many packs, bundles, or items a buyer can purchase in a season, closing the multi-session loophole entirely.

Limited releases and high-demand drops

Ensure fairness during a launch window or promotional event by capping how much any single buyer can purchase.

Abuse and fraud prevention

Quietly cap repeat purchases from accounts showing suspicious behavior, without revealing to the buyer that a limit exists.

How it works

At checkout, FastSpring checks the buyer's cumulative purchase history against the rule in real time.

flowchart LR
    A[Buyer starts checkout] --> B{Under the limit?}
    B -->|Yes| C[Checkout proceeds, no friction]
    B -->|No| D[Order blocked, message shown]
⚠️

The limit tracks cumulative units across all orders in the period, not the quantity in a single order. For example, a buyer who places five separate one-unit orders counts as five against the limit. At a limit of three, FastSpring blocks the buyer's fourth order, even if each order contained only one unit.

Because the check runs on FastSpring's back end, buyers can't get around it by opening multiple browser tabs, switching devices, or using a different payment method.

Configuration options

These are the decisions your account team turns into a rule. Select a field below to see what it controls, and have your answers ready when you request the rule (see Getting set up).

Name

A short, descriptive label for the rule, for example, Season 3 Battle Pass Cap. It's for internal reference only. Buyers never see it.

Purchase limit and limit period
FieldDescription
Purchase LimitThe maximum number of units a buyer can purchase within the period. Must be a whole number.
Limit PeriodThe length of the window: a number plus a unit, for example 1 Month or 2 Week. Supported units: Day, Week, Month, and Year.
Reset schedule

Controls when the purchase count resets for each buyer.

OptionHow it worksBest for
RollingThe window slides backward from the current moment. A 1-month rolling limit always looks back exactly 30 days, moving forward with each purchase.Ongoing abuse prevention, per-buyer fairness windows
CalendarThe count resets on a specific day of the month, at a specific time (UTC), for all buyers at the same time.Seasonal events, monthly caps that reset on the 1st
Related by (buyer identity)

How FastSpring identifies and tracks the buyer to count purchases.

OptionHow it worksNotes
Player IDTracks by a unique buyer identifier you send with each checkout (your player ID, gamer ID, account ID, and so on). See Passing the Player ID to FastSpring below.Recommended for gaming publishers, but requires a short integration from your developers. Stable across devices and payment methods. Works with the Sessions API, secure payloads, or SBL.
Buyer EmailTracks by the buyer's email address at checkoutAvailable on all orders. Buyers can change it more easily than a Player ID.
Account IDTracks by the buyer's FastSpring account identifierUseful for sellers using saved-payment or 1-click checkout flows.
💡

Gaming publishers: Player ID is the recommended identity signal. It follows the player across devices and payment methods, making it the most reliable option for enforcing per-player limits. You can pass it using the Sessions API, a secure payload, or SBL (see Passing the Player ID to FastSpring).

Applies to (products in scope)

The limit applies to one or more specific product paths. The rule tracks cumulative units across all listed products. You can run multiple rules at the same time, on the same or different products.

Active date range

Decide a Start Date & Time and End Date & Time if you want to scope the rule to a specific window, such as a seasonal event or limited-time promotion. Both are optional; if you don't provide an end date, the rule stays active indefinitely.

Buyer-facing message

Controls what the buyer sees at checkout when they reach their limit. Your account team sets this separately from the fields above, so flag your preference when you request the rule (see Getting set up).

OptionBuyer seesWhen to use
Purchase limit message"You've reached the purchase limit for [product name]."Transparent, player-facing rules where you want the buyer to understand why FastSpring blocked them
Generic error message"An unexpected error occurred, and we are not currently able to accept payment."Abuse or fraud prevention rules where you prefer not to disclose that a limit exists
💡

The generic error message doesn't flag the buyer as fraudulent, affect their account status, or feed into any fraud scoring system. It's a display preference only.

Preview: how your account team builds a rule

As your account team fills in the fields above, the configuration screen shows a live, plain-language summary of the rule, for example:

Each Buyer Email may purchase up to 1 unit(s) of the selected product(s) within any 1-month period.

For a Calendar reset, the summary also includes the reset details:

...within a 1-month period, resetting on the 1st at 00:00.

Review this summary with your account team before the rule goes live, to confirm it matches what you intended.

Once active, the rule appears alongside any other configured rules in a table showing its Name, Limit Period, Reset Schedule, Purchase Limit, Start date, and End date. You can ask your account team to share this view at any time to check on a rule's status.

Passing the Player ID to FastSpring

This section is for your developers. If you're not tracking by Player ID, skip ahead to Getting set up.

To track by Player ID, you must send a unique buyer identifier with each checkout. You can use whatever identifier you already have for a buyer (player ID, gamer ID, account ID, and so on). FastSpring stores it under a tag. Your account team configures this tag's field name for your store, so you must send the identifier under that same field name, no matter which checkout method you use.

Include the identifier in orderTags when you create the session.

{
  "orderTags": { "customerId": "cust_1234" },
  "cart": { "lineItems": [ { "productPath": "gold-tier-cow", "quantity": 1 } ] }
}

Choosing and mapping the tag field name

You send the identifier as a tag, and its key must match the value FastSpring has configured for your store. A FastSpring admin sets this in your store's Risk Assessment Settings, in the Gamer ID Tag Name Key field, labeled "the name of the session tag value which contains the unique gamer id" in the app. Whatever name your account team enters there becomes the key FastSpring looks for at every checkout.

These two must line up:

  • the Gamer ID Tag Name Key configured for your store (set by FastSpring), and
  • the tag key you send in your Sessions API orderTags, secure payload tags, or SBL fastspring.builder.tag(...) call.

For example, if your account team sets the Gamer ID Tag Name Key to customerId, every checkout must send { "customerId": "<your buyer id>" }. Your account team confirms the exact key with you when they configure your rule, so your developers know what to send.

Internal: FastSpring admin setup

Set the key in the FastSpring app under Settings > Store Settings > Store Risk Settings. The Risk Assessment Settings page displays. Enter the agreed field name (for example customerId or playerId) in Gamer ID Tag Name Key, then Save and Apply Settings. This value must match the tag key the seller sends at checkout. Only a FastSpring admin can set this field.

Getting set up

Purchase Limits isn't self-serve yet. Contact your FastSpring account team to request configuration.

Account typeWho to contact
Managed accountContact your Customer Success Manager directly
Self-serve accountSubmit a request via FastSpring Support

When you reach out, have the following ready:

  • A short name for the rule, for your own internal reference
  • The product or products you want to limit
  • The maximum purchase quantity per buyer
  • Your preferred time window and reset schedule (rolling or calendar)
  • How to identify buyers: Player ID, Buyer Email, or Account ID (for Player ID, also the tag field name you want FastSpring to map)
  • A start and end date, if you want to scope the rule to a specific period
  • Your preferred buyer-facing message (purchase limit message or generic error)

Once configured, Purchase Limits runs automatically. Your team doesn't need to do anything else. To update or remove a rule, contact your FastSpring account team at any time.


Did this page help you?