Pricing & billing
MatMul is prepaid: you add credit, and running machines draw it down by the hour. There's no subscription and no monthly minimum.
Prices
Each offer has one price: US dollars per hour for the whole machine, with all its GPUs. That's what you're billed. Prices come from live supply and change as providers gain and lose capacity, so we don't publish a price list. matmul offers, the console's Launch page and GET /v1/offers/ show what you'd pay right now.
The price guard
A price can move between the moment you look and the moment the machine is created. Set a ceiling and the launch is refused, with nothing charged, if the price is above it:
| Where | How |
|---|---|
| Console | The price you confirm in the launch dialog is sent as the ceiling. |
| CLI | matmul instance create ... --max-price 3 (dollars per hour) |
| SDK | create_instance(..., max_hourly_price_cents=300) |
| API | "max_hourly_price_cents": 300 in POST /v1/instances/ |
| MCP | max_hourly_usd, required on every launch (details) |
When the guard trips, the API answers 409 the price rose above your max_hourly_price_cents; search again.
What you're charged for
- An instance is charged its hourly price from when you launch it until you delete it. The minutes it spends provisioning are charged once it's running; an instance that never gets past provisioning is charged only if you delete it. Billing stops at the delete request, not when the provider finishes tearing the machine down.
- Usage is metered every few minutes and shows up in the ledger as
usage_chargerows. Running time and cost inmatmul instance lsare estimates for display; the ledger is the record. - An instance stuck in
erroris still charged, because the provider still charges for the machine. MatMul terminates it automatically after an hour. - An instance keeps billing until you delete it, whether or not you're using it.
- A deleted instance stops counting toward your instance limit at the delete request, so you can launch its replacement straight away.
Adding credit
Pay by card through Stripe Checkout, from the console's Billing page or:
matmul billing add-credit --usd 20 # prints a checkout link to open matmul billing balance matmul billing ledger
The credit lands a few seconds after the payment completes. Only the organization's owner can see the balance and add credit. Top-ups are $10 at the least and $500 at most, with up to $1,000 per rolling 24 hours.
New-account limits
A new organization starts unverified, with lower limits:
| Limit | Unverified |
|---|---|
| Instances at a time | 1 |
| Managed jobs at a time | 1 |
| Largest top-up | $100 |
| Top-ups per 24 hours | $100 |
| Usage per 24 hours | $50 |
| Grace period after a freeze | 1 hour (4 hours once verified) |
They lift after a card payment authenticated by your bank (3-D Secure) or a review by us. Verified organizations can run 2 instances at a time. matmul billing balance shows the limits that apply to you, and Support can raise them.
Low balance, freezes and the grace period
- Launch check. A launch needs at least one hour of runway at the new machine's price. Otherwise it's refused with
insufficient balance. - Warning. When your balance has less than about an hour left at the current burn rate, we email the owner.
- Freeze. At zero, or when the account reaches its 24-hour usage limit, it's frozen. New launches are refused, and the CLI, console and MCP server show a warning. Running machines keep running.
- Grace period. If the account is still frozen when the grace period ends, running instances are terminated and managed jobs are cancelled, and we email you. Anything on those disks is lost. The grace period is 4 hours for verified organizations and 1 hour for unverified ones.
Adding credit lifts a balance freeze straight away. A usage-limit freeze lifts by itself once the rolling 24-hour window drops back under the limit. A freeze for another reason, such as a disputed payment, stays until we review it.
While frozen, GET /v1/billing/ returns frozen: true, frozen_reason, frozen_at and grace_hours_remaining, counted from your organization's grace period.
Platform capacity limit
Besides your own limits, MatMul caps how many machines run across all customers at once. While we're at that cap, a launch is refused with 429 GPU capacity is temporarily limited; please try again later. Nothing is charged, and machines that are already running aren't affected. Try again later, or ask Support if it keeps happening.