Statistics and Exact Money Math in Make.com
Median, standard deviation, percentiles, regression and cent-exact money splits in Make.com with one JavaScript step. No Google Sheets detour, copy-paste recipes.
Updated October 2026
Make's native Code app is the right choice for short, self-contained scripts on a paid Make plan: a run under one second costs 2 credits, and that is cheap. CustomJS is the right choice when the script waits on something, runs more than a few seconds, needs an npm package Make does not ship, or has to be shared across several scenarios as one stored function.
Both tools run real Node.js. Both can call external APIs. Both have Buffer and crypto. The differences are in billing (per second versus per call), ceilings (30 seconds and 512 MB on standard Make plans), library access (npm only on Make Enterprise), and whether a piece of logic can live in one place. This article lays those out with the numbers, including the cases where Make Code is simply the better deal.
Make documents the Code app at apps.make.com/code (the older help URL redirects there). As of October 2026 the page states:
For the dollar side of this article we use Make's own base tiers, checked October 2026: Core at $9 per month and Pro at $16 per month, both with 10,000 credits, which works out to roughly $0.90 to $1.60 per 1,000 credits on monthly billing.
The Execute Inline JavaScript module in the CustomJS app for Make is an ordinary Make module from Make's point of view: 1 credit per call, no matter how long the code runs. The execution happens on CustomJS servers and is counted against a request quota there. The timeout is 30 seconds on the free plan and 60 seconds on paid plans.
| CustomJS plan | Price | Requests | Timeout |
|---|---|---|---|
| Free | $0, no credit card | 600 per month (20 per day) | 30 s |
| Pro | $9 per month | 100 per day (about 3,000 per month) | 60 s |
| Ultra | $29 per month | 500 per day (about 15,000 per month) | 60 s |
| Mega | $99 per month | 5,000 per day (about 150,000 per month) | 60 s |
The honest footnote: this is a second vendor. Your data leaves Make for the duration of the call, you manage one more API key, and the plan fee applies even in a month where you run the module twice. Those are real costs and they belong in the comparison. See /pricing for the current quotas.
Per run, Make Code costs 2 x seconds credits and CustomJS costs 1 credit plus one request. Multiply by 1,000 runs per month, which is above the CustomJS free tier, so the CustomJS column includes the $9 Pro plan. Dollar figures use the $0.90 to $1.60 per 1,000 credits bracket from Make's Core and Pro base tiers.
| Script runtime | Make Code, 1,000 runs | CustomJS, 1,000 runs | Cheaper |
|---|---|---|---|
| 1 second (lookup, reshape, validate) | 2,000 credits, about $1.80 to $3.20 | 1,000 credits + $9 Pro, about $10 to $11 | Make Code |
| 2 seconds (one quick API call) | 4,000 credits, about $3.60 to $6.40 | 1,000 credits + $9 Pro, about $10 to $11 | Make Code |
| 5 seconds (slow API, larger payload) | 10,000 credits, about $9 to $16 (the whole Core base pool) | 1,000 credits + $9 Pro, about $10 to $11 | Roughly even |
| 15 seconds (retries, polling, batch) | 30,000 credits, about $27 to $48 | 1,000 credits + $9 Pro, about $10 to $11 | CustomJS, by 3x to 4x |
Two things move the line. First, volume under 600 runs per month: the CustomJS column drops to the credits alone (no plan fee), and CustomJS is cheaper at every runtime. Second, Make's Free plan: the Code app is not available there at all, so the only way to run code without upgrading Make is an external module. Above those two cases, the table stands, and most scripts people write sit in the first two rows. A 1 second script on Make Code costs 2 credits, and that is fine.
There is also a predictability point that does not show up in averages. A per-second script costs double in the month the upstream API is slow, and the extra credits come out of the pool every other module in the account shares. A per-call module costs the same on a slow day.
Here is a typical reshape job: an order comes in from a form with line items as strings, and the next module needs clean numbers, a subtotal, tax and a total. In CustomJS the mapped value arrives as the input variable (a JSON string is parsed for you; a Make collection should go through the JSON app's Transform to JSON module first). Put a Make bundle like this into the Input field:
{
"orderId": "SO-20481",
"currency": "EUR",
"taxRate": "19",
"items": [
{ "sku": "MUG-01", "qty": "2", "unitPrice": "12,50" },
{ "sku": "TEE-M", "qty": "1", "unitPrice": "24,00" },
{ "sku": "STK-10", "qty": "3", "unitPrice": "1,99" }
]
}The JavaScript Code field, with Return Type set to Object:
// input: the order bundle from the form module (parsed JSON)
const order = typeof input === "string" ? JSON.parse(input) : input;
// "12,50" -> 12.5, "1.299,00" -> 1299
const toNumber = (s) => Number(String(s).replace(/\./g, "").replace(",", "."));
const items = order.items.map((it) => {
const qty = toNumber(it.qty);
const unitPrice = toNumber(it.unitPrice);
return { sku: it.sku, qty, unitPrice, lineTotal: +(qty * unitPrice).toFixed(2) };
});
const subtotal = +items.reduce((sum, it) => sum + it.lineTotal, 0).toFixed(2);
const taxRate = toNumber(order.taxRate) / 100;
const tax = +(subtotal * taxRate).toFixed(2);
return {
orderId: order.orderId,
currency: order.currency,
itemCount: items.reduce((n, it) => n + it.qty, 0),
items,
subtotal,
tax,
total: +(subtotal + tax).toFixed(2),
};Output, which Make shows as mappable fields in every following module:
{
"orderId": "SO-20481",
"currency": "EUR",
"itemCount": 6,
"items": [
{ "sku": "MUG-01", "qty": 2, "unitPrice": 12.5, "lineTotal": 25 },
{ "sku": "TEE-M", "qty": 1, "unitPrice": 24, "lineTotal": 24 },
{ "sku": "STK-10", "qty": 3, "unitPrice": 1.99, "lineTotal": 5.97 }
],
"subtotal": 54.97,
"tax": 10.44,
"total": 65.41
}This script finishes in roughly 120 ms on CustomJS (the median inline script across our runs takes 121 ms). The function body is plain Node and runs unchanged in Make Code once you wire its input the way that module expects; there the run bills 2 credits because it is under a second. For this kind of script, on a paid Make plan, with more than 600 runs a month, Make Code is the cheaper home for it.
Where the two diverge is the first line that needs a package. The following 8 lines pull the product names out of a supplier's HTML price list with cheerio. On CustomJS this runs on the free plan. On Make Code it requires Enterprise, because cheerio is not one of the three bundled libraries:
const cheerio = require("cheerio");
// input: the HTML of a supplier price list, fetched by an HTTP module before this step
const $ = cheerio.load(input);
const products = $("table.prices tr td:first-child")
.map((i, td) => $(td).text().trim())
.get();
return { count: products.length, products };The full package list (axios, cheerio, pdf-lib, jsonwebtoken, jose, uuid, mathjs, moment-timezone, nodemailer, json-2-csv, and more) is at /integration/make/npm-modules.

Make facts from apps.make.com/code and make.com/en/pricing, October 2026. CustomJS facts from our plan limits on the same date.
| Feature | Make Code app | CustomJS for Make |
|---|---|---|
| Availability | Paid Make plans, open beta | Every Make plan including Free |
| Make credits | 2 per second of execution | 1 per call |
| Other cost | None | 1 request from a CustomJS quota (600/month free; $9, $29, $99 tiers) |
| Timeout | 30 s (Enterprise 300 s) | 30 s free, 60 s paid |
| Memory | 512 MB (Enterprise 1 GB) | No published figure |
| Runtime | Node 20, Python 3.12 | Node.js, JavaScript only |
| Outbound HTTP | Yes (Make recommends the HTTP module for credentialed calls) | Yes, fetch and axios |
| Buffer and crypto | Yes | Yes |
| Libraries | moment, moment-timezone, lodash; others on Enterprise only | 30+ npm packages on every plan |
| Shared functions across scenarios | No, blueprint export only | Yes, stored functions with named parameters and versions |
| Where the code runs | Make's sandbox | CustomJS servers (data leaves Make for the call) |
| Also usable outside Make | No | Yes: REST endpoint, Power Automate connector, n8n via HTTP Request |
A code step of either kind is the wrong tool in these cases:
formatDate, replace, split, toString and base64 in the mapping panel cost nothing extra and run inside the module that uses them.sum(map(items; price)) or the Numeric Aggregator handles one sum, average, min, max or count without code. If your scenario lands in the CustomJS rows, the free plan needs no credit card and the Make module installs from the app directory in a minute.
Create a free CustomJS account
Continue reading on similar topics
Median, standard deviation, percentiles, regression and cent-exact money splits in Make.com with one JavaScript step. No Google Sheets detour, copy-paste recipes.
Five one-operation JavaScript fixes for Make.com data transformation: broken AI JSON, group and sum arrays, localized numbers, timezones, file to Base64.
Call any API from Make.com: WebSockets, Digest auth, OAuth 1.0 signatures, and Base64 binaries with copy-paste JavaScript that runs inside your scenario.