Billing
fremforge uses a flat €30/seat/month pricing model. No per-minute runner charges within the included pool, no per-GB storage charge, no per-repo charge. One number.
Pricing model
A seat is one purchased member slot in your organisation. Your seat count is the number of slots you have purchased. Billing is based on your seat count, not on individual member activity. All members can use fremforge regardless of how much they push or commit in a given month.
Your org starts with a 30-day free trial. A payment method is authorised at signup via Mollie hosted checkout (€0, no funds are taken; some banks may briefly pre-authorise €0.01 and reverse it immediately). The trial automatically converts to your monthly plan on day 30 and your card is charged at that point; cancel any time before day 30 in Admin → Billing at no cost, and the card is never charged. We send a reminder 3 days before the auto-charge.
Trial-tier limits
The trial tier exists to let you evaluate fremforge end-to-end without exposing the platform to runaway abuse from short-lived signups. Four limits are tighter than the paid plan:
| Limit | Trial | Paid |
|---|---|---|
| Hosted runner minutes | 300 minutes for the entire trial (flat pool, not per-seat/month), enough for ~15-30 CI runs at typical durations | 1,000 min/seat/month, pooled |
| Repositories | 10 | Unlimited (sales conversation triggered past 500/seat) |
| Concurrent CI jobs | 2 | 2/seat, max 100/org |
| Seats | 1 | 1-1000 (you choose at conversion) |
All other features (SSO, SCIM, secret scanning, dependency updates, the package registry, signed commits, etc.) are available on the trial at full capacity. Trial caps are deliberately conservative as a defence-in-depth measure against signup abuse, the card-authorisation gate at signup is the primary control, but capped resources during the trial keep the cost ceiling low if a card-verified signup turns out to be fraudulent. If you hit any cap before you’ve finished evaluating, the path forward is converting to paid (which unlocks the full per-seat pools retroactively for the remainder of the month) rather than waiting out the trial.
Billing terms, monthly or annual
You pick a billing term at signup (changeable at any time via Org admin → Billing → Billing term):
- Monthly term, €30/seat/month. Seat charges are billed upfront at the start of each 30-day cycle. Cancel any time; access continues to the end of the current paid month.
- Annual term, €306/seat/year (15% off, equivalent to €25,50/seat/month). Seat charges are billed upfront as a single annual fee at the start of each one-year term. The annual fee is non-refundable. If you cancel mid-term, access continues to your committed-until date and the unused portion is not refunded.
Usage-based charges (runner minute overage and storage overage) are the exception under both terms: because the final amount is only known once the period ends, they are billed monthly in arrears and appear as a line item on the following invoice.
First period is prorated. When your trial ends, the first charge covers only the remaining days until your next billing date at the daily rate (€30 ÷ 30 × days for monthly term; equivalent daily rate × days remaining in current month, with the full annual fee starting at the next month boundary, for annual term). Full-cycle upfront billing starts from that date.
What’s included per seat
| Feature | Included |
|---|---|
| Git repositories | Unlimited (count); 5 GB/seat pooled storage |
| CI runner minutes (hosted) | 1,000 min/seat/month, pooled across the org |
| Package registry storage | 5 GB/seat, pooled across the org |
| LFS storage | 5 GB/seat, pooled across the org |
| Webhooks | Unlimited |
| API requests | 600 reads/min and 60 writes/min per token. See the API docs for the full rate limit reference. |
| Team members | Unlimited |
| SSO (OIDC + SAML) | Included |
| Secret scanning (Gitleaks) | Included |
| Dependency scanning (Renovate) | Included |
| Container scanning (Trivy) | Included |
| SBOM generation (Syft) | Included |
| SAST (OpenGrep) | Included |
| SLSA provenance | Included |
Hosted runner minutes are pooled: a 5-seat org gets 5,000 min/month to spend however they like across all repos and workflows. Minutes reset on the 1st of each month; unused minutes do not roll over.
Payment
Payments are processed by Mollie, an EU-based, PSD2-compliant payment processor. No payment data touches fremforge servers.
Accepted payment methods:
| Method | Notes |
|---|---|
| Credit card | Visa and Mastercard (credit and debit) |
| SEPA direct debit | Eurozone bank accounts; mandate required |
| SEPA bank transfer | Manual bank transfer; reference printed on invoice |
| Google Pay | Available in supported browsers |
| Apple Pay | Available in Safari on Apple devices |
Add a payment method
- Go to Org admin → Billing → Payment method (
frem.sh/<your-org>/_admin/billing). - Click Add payment method. You are redirected to a Mollie-hosted payment page.
- Complete the payment authorisation or mandate setup.
- On return, the payment method appears as active.
Invoices
Invoices are generated on your billing date (every 30 days from trial end) and sent to the billing contact email. Each invoice charges the seat fee upfront for the upcoming 30-day period, plus any usage overage accrued in the period that just ended. Download past invoices at any time from Org admin → Billing → Invoices. Each invoice is a PDF with itemised seat count, unit price, subtotal, VAT, and any overage line items.
VAT
VAT is charged where applicable under EU VAT rules:
- EU businesses with a valid VAT number: EU B2B reverse charge applies; VAT is not charged. Enter your VAT registration number at Org admin → Billing → Tax info before the next invoice date.
- EU consumers and unregistered businesses: local VAT rate applies (determined by your billing country).
- Non-EU organisations: VAT is not charged.
If you enter a VAT number after an invoice has already been issued, the correction takes effect on the next invoice. Retroactive VAT credit notes are available on request at support@frem.sh.
Adding and removing seats
Adding members
When you invite a new member and they accept, the seat count increases by one. The additional seat is charged upfront at the next billing date.
The seat breakdown at Org admin → Billing → Seat breakdown lists all current members and their seat allocation.
Removing members
- Go to Org admin → Members →
<member>→ Remove member. - Confirm the removal.
Removing a member immediately revokes their access to all org repositories and cancels any active sessions. The freed seat stays in your contracted cap for the rest of the pre-paid period, you can invite a replacement into it at any time without an additional charge.
Reducing your seat cap
Lowering the contracted seat count (separate from removing individual members) is done at Org admin → Billing → Subscription → Reduce seats:
- Enter the new (lower) seat cap.
- Confirm. The change is scheduled, your contracted seat count stays at the current value until the next billing boundary, at which point it drops to the new value.
No refund or credit note is issued for the reduced seats: you continue to have full use of the seats you paid for until the end of the pre-paid period (end of month for monthly term; committed-until date for annual term). The reduced seat count becomes the basis for the next invoice. This policy applies identically to monthly and annual terms, terms §4.3.
If you change your mind before the apply date, bumping the seat cap back up (or to a higher number) instantly cancels the pending reduction. Going back to a number higher than your current cap triggers a prorated upgrade charge as normal.
Runner minutes overage
The org pool is the sum of all your seats × 1,000 min/month.
Overage is disabled by default. When the pool is exhausted, new CI jobs queue until minutes free up (at the start of the next billing period or when BYO runners are available). Jobs are not lost, they wait in the queue.
Enabling overage: org owners can opt in to metered overage billing at Org admin → Billing → Runner minutes → Enable overage billing. When enabled, minutes above the pool are charged at €0,01 per minute. Because the final count is only known after the period ends, overage is billed in arrears, it appears as a line item on the next invoice. The projected overage charge for the current period is visible on the Billing page.
Disabling overage: the toggle at Org admin → Billing → Runner minutes → Disable overage billing stops new overage from accruing. Overage already consumed in the current period is still billed in arrears on the next invoice.
BYO runners: minutes on self-registered runners are not counted against the pool and are never subject to overage charges. Register your own runners at Org admin → Settings → Runners → New runner. See CI runners for registration instructions.
Storage limits and quotas
Storage quotas are per-seat, pooled across the org (same as runner minutes):
| Resource | Included per seat | Pooled |
|---|---|---|
| Git repository storage | 5 GB | Yes, shared across all repos in the org |
| Git LFS storage | 5 GB | Yes |
| Package registry storage | 5 GB | Yes |
Example: a 5-seat org has 25 GB pooled repository storage, 25 GB pooled LFS, and 25 GB pooled registry storage.
Checking current usage: Org admin → Billing → Storage. Shows total used and remaining per resource type, with a per-repository breakdown.
Individual repository limits: there is no per-repository hard cap. A single large repository can consume the full org pool. Use the per-repository breakdown to identify outliers.
Repository size recommendations: keep individual repositories under 1 GB. Repositories over 5 GB will see slower clone and fetch times. Use LFS for binary files (images, videos, compiled artifacts, datasets).
LFS: Git LFS is supported natively. Track large files with git lfs track "*.psd" and push normally. LFS objects are stored separately from the Git object database and counted against the LFS quota, not the repository quota.
Package registry storage: each package version uploaded (Docker image layer, npm tarball, Maven JAR, etc.) counts against the registry quota. Delete old package versions at Repository → Packages → <package> → Versions → Delete to reclaim space.
The org owner receives an email warning at 80% utilisation.
Storage overage is disabled by default. When the pool is full, new uploads are blocked.
Enabling overage: org owners can opt in to metered storage overage at Org admin → Billing → Storage → Enable storage overage billing. When enabled, GB used above the included pool are charged at €0,20/GB/month, billed in arrears on the next invoice.
Disabling overage: the toggle at Org admin → Billing → Storage → Disable storage overage billing stops new overage from accruing. Overage already used in the current period is still billed in arrears on the next invoice.
Other ways to increase storage:
- Add a seat, each additional seat adds 5 GB repo + 5 GB LFS + 5 GB registry to the org pool.
- Buy a storage add-on, contact support@frem.sh to purchase additional GB across all storage pools without adding seats.
- Delete old data, remove old package versions at Repository → Packages or clean up large unused files.
Billing contacts and enterprise arrangements
Billing email: set a dedicated billing contact at Org admin → Billing → Billing contact (separate from the org owner email). Invoices and payment failure notifications go to this address.
PO-based procurement or enterprise agreements: contact hello@frem.sh to discuss purchase orders, multi-year contracts, invoiced billing (instead of Mollie mandate), or volume pricing.
Subscription lifecycle
| State | Description |
|---|---|
| Active | Normal, paid and within usage |
| Payment past due | Upfront charge for the new period failed; Mollie retries automatically. Update the payment method within 7 days. |
| Suspended | Payment not recovered after 7 days; repositories become read-only. CI is paused. |
| Cancellation scheduled (monthly term) | Owner requested cancellation; 30-day window before effect. Reversible from the admin UI or cancel email link. |
| Cancellation scheduled (annual term) | Owner requested cancellation mid-term; access continues to the committed-until date (i.e. the end of the prepaid year) and then ends. The upfront annual fee is non-refundable per Terms §4.7. Reversible from the admin UI any time before the committed-until date. |
| Cancelled | Read-only access; 60-day retention window before purge. |
| Deleted | All data purged per DPA §9. |
During the Cancelled state you can still download a full data export at Org admin → Data export. Do this before the 60-day window closes.
Troubleshooting
Payment failed.
Mollie sends a retry notification to your billing contact email. Go to Org admin → Billing → Payment method and update or replace the payment method. Mollie retries the upfront charge automatically after the method is updated. If the org enters Suspended state, CI and push access resume within minutes of a successful payment.
Wrong VAT amount on an invoice.
Enter or correct your VAT registration number at Org admin → Billing → Tax info before the next invoice date (the 1st of next month). If the current invoice is incorrect, contact support@frem.sh with your VAT number and invoice number. A credit note is issued and a corrected invoice generated.
Seat count is higher than expected.
Go to Org admin → Billing → Seat breakdown to see all current members. Your seat count equals the number of members in your org (minimum 1). To reduce the count, remove members at Org admin → Members → <member> → Remove member. The seat count updates at the next billing cycle.
Invited someone and the seat count went up.
Every accepted invite increases the seat count by one. If you invited someone by mistake, remove them at Org admin → Members before the next billing date to avoid being charged for the seat.
Cross-references
- Org admin, the full admin surface including the Billing tab
- Getting started, account setup, inviting members, and first repository
- Data export, download all your data before cancelling