On this page
  1. Related
  2. Games
  3. References
  4. Sources

Bulk buying lets the player buy several of an item at once, with the batch priced as a sum. Under exponential costs the sum is a geometric series, and inverting it gives the most a player can afford1. Games differ in what they charge:

  • Universal Paperclips labels batches of drones with the sum of their single prices and charges each in turn, so the label is the price2.
  • Cookie Clicker labels a batch with the closed-form sum, rounded once, but charges each building’s rounded price in turn: buy() charges each unit's rounded-up price in turn and ignores the shown total: 10 Grandmas from zero cost 2,035, not 2,031, and 2,030 cookies still buy 9.3.
  • Antimatter Dimensions’ max-buy charges only the most expensive set of ten4. Its “buy until 10” is exact, because the price is flat within a set5.
  • One at a timeCookie Clicker (2013). Buy 1, 10, or 100; the label is the geometric sum rounded once, and the purchase rounds each building.6,7,3Universal Paperclips (2017). Drones by 10, 100, or 1,000, labeled with the exact sum of the single prices.2
  • Last price onlyAntimatter Dimensions (2016). Max-buy charges only the most expensive set.5,4

Games

GameYearHowNote
Cookie Clicker2013One at a timebuy 1, 10, or 100; the label is the geometric sum rounded once, and the purchase rounds each building
Universal Paperclips2017One at a timedrones by 10, 100, or 1,000, labeled with the exact sum of the single prices
Antimatter Dimensions2016Last price onlymax-buy charges only the most expensive set
Every claim about this mechanic, by game (8)

References

  1. ^For a plain exponential (base b, rate r, and k owned), Pecorella gives the most you can buy with c currency as ⌊logr⁡(c(r−1)/(b⋅rk)+1)⌋.Dev blogPecorella 2016
    How we know
    $max = floor(log_r(\frac{c(r-1)}{b(r^k)}+1))$
    “BONUS CONTENT!” · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    In the claim ledger

  2. ^ abThe drone panel prices 10, 100, and 1,000 drones as the exact sum of their single prices, and a purchase pays each drone's price in turn.CodeUniversal Paperclips main.js
    How we know
    p10h = p10h + Math.pow(h,2.25)*1000000;
    main.js#L2516-L2530 · archived copy ↗
    for (x=0; x<amount; x++){
    main.js#L2460-L2468 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-21.

    Checked by a second AI model, 2026-10-21.

    In the claim ledger

  3. ^ abbuy() charges each unit's rounded-up price in turn and ignores the shown total: 10 Grandmas from zero cost 2,035, not 2,031, and 2,030 cookies still buy 9.VerifiedCookie Clicker main.js v2.058
    How we know
    if (Game.cookies>=price)
    main.js#L8125-L8152 · archived copy ↗
    Game.ObjectsById[what].buy();
    main.js#L8898-L8901 · archived copy ↗

    Measured by a script. It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-20.

    Checked by a second AI model, 2026-10-27.

    In the claim ledger

  4. ^ abMax-buy (getMaxBought) counts the whole sets affordable but charges only the most expensive set × 10, about 0.1% under the sum at ×1,000 per set.VerifiedIvarK/AntimatterDimensionsSourceCode
    How we know
    NOTE! this assumes you only have to pay for the most expensive thing you get when you buy in bulk.
    src/core/math.js#L387-L429 · upstream ↗
    331  dimension.currencyAmount = dimension.currencyAmount.minus(Decimal.pow10(maxBought.logPrice));
    
    src/core/dimensions/antimatter-dimension.js lines 320–331 at 5409e32 · upstream ↗

    Measured by a script. It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-20.

    Checked by a second AI model, 2026-10-27.

    In the claim ledger

  5. ^ ab“Buy until 10” charges price × purchases left in the set (costUntil10), exact since the price is flat within a set.CodeIvarK/AntimatterDimensionsSourceCode
    How we know
    389    return this.cost.times(this.remainingUntil10);
    
    src/core/dimensions/antimatter-dimension.js lines 388–390 at 5409e32 · upstream ↗
    src/core/dimensions/antimatter-dimension.js#L227-L242 · upstream ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-27.

    In the claim ledger

  6. ^ abThe shown bulk price (getSumPrice) is the geometric sum b⋅ra⋅(rk−1)/(r−1), discounted and rounded up once: 20.30× the next single price for 10, and 7.83 million× for 100.VerifiedCookie Clicker main.js v2.058 · Pecorella 2016 · Cookie Clicker Wiki, “Building”
    How we know
    price+=this.basePrice*Math.pow(Game.priceIncrease,Math.max(0,i-this.free));
    main.js#L8096-L8105 · archived copy ↗
    $cost = b * \frac{r^k(r^n-1)}{r-1}$
    “BONUS CONTENT!” · archived copy ↗
    \text {Price of Buy 10} = \text {Price} \times 20.303718238
    Building Prices · archived copy ↗

    Measured by a script. It fails if the result disagrees with the claim.

    The numbers come from the run; its author, an AI model, checked the script measures what the claim says, 2026-10-20.

    Checked by a second AI model, 2026-10-27.

    In the claim ledger

  7. ^Bulk options are 1, 10, and 100; “All” works only in sell mode and means 100 in buy mode.CodeCookie Clicker main.js v2.058
    How we know
    if (Game.buyMode==1 && Game.buyBulk==-1) Game.buyBulk=100;
    main.js#L8816-L8825 · archived copy ↗

    Checked against the evidence by its author, an AI model, 2026-10-20.

    Checked by a second AI model, 2026-10-27.

    In the claim ledger

Sources

Code

Primary

Secondary