Documentation · Billing
How you are billed
One meter and one invoice across both engines, what is measured, and why every amount is an integer of micro-dollars.
One meter and one invoice, whether you use CI runners, infrastructure runs, or both. There is no separate Terraform bill and no separate CI bill.
The rates are on the pricing page. This page is about the mechanism.
CI jobs and infrastructure runs are both measured in minutes of execution, priced by the size of machine the work asked for. A larger runner costs more per minute than a smaller one, in proportion to the machine.
Storage-shaped things — the Docker layer cache, sticky disks — are measured by what they store over time rather than by the minute. The Actions cache is included and is not metered at all.
Time is counted from when your work starts running to when it stops. Waiting for a machine is not billed.
Every amount in the system is an integer number of micro-dollars, a millionth of a dollar. A cent is ten thousand of them.
That sounds like an implementation detail and is the reason your invoice adds up. A month is the sum of many thousands of amounts each individually smaller than a cent, and floating-point arithmetic over that many values accumulates error you only find out about when a customer's invoice disagrees with the ledger by a cent that neither side can explain. Integers cannot drift. The database independently re-adds the lines and refuses a set that does not sum to the total.
We wrote up why in Why every price in our billing is an integer of micro-dollars.
Usage in the dashboard shows what you have used so far in the current period, broken down by where it went, and a projection of where the month is heading if the pattern holds.
You can set a spending threshold and be told when you cross it. The alert is a check, not a live trigger. CI usage reaches billing once a day, at about 02:30 UTC, and the thresholds are checked at 02:50 UTC and again at 08:00 UTC. Infrastructure runs reach billing as they finish, so they are counted by the next check. So the alert can arrive up to about a day after the moment you crossed the threshold, and the Usage figures can lag by the same day.
The alert is a notice: nothing stops when it fires. If you want new CI jobs to stop at a figure, set a Spending cap on the Usage page as well. It is checked against the same daily figure, so a month can pass it by up to about a day of usage before new jobs stop. Spending alerts and the spending cap has both in full.
At the end of a period the usage is turned into a draft invoice with a line per category, and then charged to the card on file. You can read the lines before and after it is charged.
A card is required before compute runs. Free compute with internet egress attracts miners, and we would rather say why than pretend otherwise.
A failed payment does not delete anything. You are told, retried on a schedule, and told again — and if it stays unpaid, the account is restricted rather than torn down: existing work and history remain readable while new compute is held. Fixing the card restores it. Invoices and payments has the stages, day by day.
Disputes are recorded against the invoice they concern, so the history stays readable by the organisation it belongs to.